参照によって渡すことによって直接配列の値を変更(大文字に変換)するコードスニペットを検討してください。なぜ一時変数は配列要素を変更する必要があり、なぜそれを最後に設定解除する必要があるのですか?
<?php
$colors = array('red', 'blue', 'green', 'yellow');
foreach ($colors as &$color) {
$color = strtoupper($color);
}
unset($color); /* ensure that following writes to
$color will not modify the last array element */
print_r($colors);
?>
出力:
Array
(
[0] => RED
[1] => BLUE
[2] => GREEN
[3] => YELLOW
)
私はすべて上記のコードを理解していませんでした。次のように私は上記のコードに関するいくつかの疑問をしました:
- 私は
foreach
ループ内からすべての$color = strtoupper($color);
でこの文を理解していませんでした。なぜ一時変数$color
が使用され、関数strtoupper()
に参照&$color
が渡されず、$color
しか渡されないのはなぜですか? - なぜ変数
$color
が設定されていないのですか?設定を解除する前に何が入っていましたか? - コメントの意味は配列から最後の要素として「次が最後の配列要素を変更しません $色に書き込みことを確認してください」、すなわち黄色もをどのように修正なっているのですか?要するに
ステップバイステップのようにしてそこforeach
ループからのコードで何が起こっているのか私に説明してください。
誰かが私の疑問に答えてください。
注:上記のコード例は、PHP Manualの「Array」の章にあります。
/削除、 'unset'コールをコメント' $のcolor'変数に書き込みを追加最後の 'print_r'コールの前に)あなたはすぐにそれを得るでしょう。 – Calimero
ここでunset()をコメント/削除して、実際に起こっている魔法を見てみましょう。答えが出てくる。 – Calimero
補助として、あなたはarray_map:$ colors = array_map( "strtoupper"、$ colors); –