下記のように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して、同一名称の変数は使いまわさないようにコーディングしましょう。
