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