2015/03/29

foreach()を&付変数参照するとき気をつけること

foreachの参照変数ループではまったのでメモ

PHP::Bug #29992

以下抜粋

Reproduce code:

Expected result:

Array
(
[0] => 1
[1] => 2
[2] => 3
)
Array
(
[0] => 1
[1] => 2
[2] => 3
)

Actual result:

Array
(
[0] => 1
[1] => 2
[2] => 3
)
Array
(
[0] => 1
[1] => 2
[2] => 2
)

対処はPHPマニュアルに書いてありました。
foreachループ抜けたら変数unset()しろとのこと。
foreachブロック抜けてもas変数がブロックスコープ外扱いなのか、、、気持ち悪いけどそういうものだと理解。

PHP マニュアル 言語リファレンス 制御構造 > foreach

抜粋

警告
foreach ループを終えた後でも、 $value は配列の最後の要素を参照したままとなります。 unset() でその参照を解除しておくようにしましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

JavaScriptを有効にしてください。
あるいは下記手順で投稿できます。
1.「トークンコード取得」を押すと枠内にトークンコードが表示されます
2.表示されたトークン文字を「投稿確認トークン入力」へ入力します

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">