2011/12/11

PHPのforeachで参照渡し

PHP 


PHP の foreach は、値渡しなのでループの中で中身を書き換えることはできません。




foreachで値渡し

$array = array('apple', 'banana', 'caviar');

foreach ($array as $key => $value) {
	if ($value == 'caviar') {
		$value = 'cocoa';  // キャビアをココアに変更
	}
}

var_dump($array);

実行結果は次の通りです。

array(3) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(6) "banana"
  [2]=>
  string(6) "caviar"  // ← キャビアのまま
}


foreachで参照渡し

そこで、$value を&$value とし、参照渡しで変数生成させるようにしてみます。


$array = array('apple', 'banana', 'caviar');

foreach ($array as $key => &$value) {
	if ($value == 'caviar') {
		$value = 'cocoa';  // キャビアをココアに変更
	}
}

var_dump($array);

実行結果は次の通りです。

array(3) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(6) "banana"
  [2]=>
  &string(5) "cocoa"  // ← ココアに変更された!!
}



このエントリーをはてなブックマークに追加     

profile
profile

洋ちゃん

@yo-chan

システムエンジニアをしています。二児の父です。

夢は天井から床までビッシリ並んだ本棚のある書斎を作ること!