参照代入で列挙中要素を置き換える2009年05月14日 00時53分09秒

なんというか、今まで知らなかったというか気にしたこともなかったというか。

foreachループ処理で

$array = array( 'a' => 'a', 'b' => 'b', 'c' => 'c' );
foreach( $array as &$item ) {
    $item = strtoupper( $item );
}
print_r( $array );
なんてやると、
Array
(
    [a] => A
    [b] => B
    [c] => C
)
なんて結果が得られるのね。

当然foreach内の「as &$item」を「as $item」にすると、print_r()の結果は小文字のまま。 なるほど、明示的な参照代入って、こういう風に使うんだぁ。

ちなみにこれはZend_Db_Adapterかなんかのソース見てて発見した。