【PHP】参照渡し(foreach)

下記のようにforeachの値($vl)に&を付けることで参照渡しを利用することができます。

$list = array(1,2,3);
foreach($list as &$val)
{
	$val++;
}

//結果としてarray(2,3,4)が出力されます。
print_r($list);

参照渡しをうまく使えばソースを簡略化して書くことが可能になります。

foreachの参照渡しには一点注意しなければならないことがあります。

$list = array(1,2,3);
foreach($list as &$val)
{
	$val++;
}

[・・中略・・]

$val = 10;

//結果としてarray(2,3,10)が出力されます。
print_r($list);

$valは配列の最終要素のポインタを所持しているため、変数を使いまわすと予期せぬエラーが発生することがあります。
回避方法としてはunsetして、同一名称の変数は使いまわさないようにコーディングしましょう。

普段はPHP、Javaを中心に仕事しています。
ブログは興味の赴くままに執筆しようと思っています。
それが誰かの役に立てれば幸いですー

湯シャン始めました(2022/3/19~)

Spadeをフォローする
PHP
タイトルとURLをコピーしました