PHPの全目次
繰り返し処理の目次
- while文
- while文をネスト
- break
- continue
- do..while文
- for文
- for文で複数の変数を変化させる
- foreach文
- foreach文でキーと値を取り出す
- foreach文で配列要素の値を変更する
foreach文で配列要素の値を変更する
foreach文で要素の値を変数に格納すると、値のコピーが変数に代入されます。その為要素の値を利用することはできますが、要素の値を変更することは出来ません。キーを一緒に取得し配列変数に対して要素の値を変更することも可能ですが、次の書式を利用することもできます。
foreach (配列変数 as &変数){実行する処理1;実行する処理2;}
変数の前に「&」を付けることで要素の値に対する参照を設定することができます。よって変数に対して新しい値を代入することで、要素の値を変更することが可能になります。
例えば次のように記述します。
$pricelist = array(80, 100, 120);
foreach ($pricelist as &$value){$value *= 1.05;}unset($value);
今回は要素の値に対する参照を取得し、各要素の値を1.05倍して再度格納しています。最後に「unset」関数を呼び出しているのは、foreach文が終了しても変数「value」には配列の最後の要素に対する参照が設定されたままのため、その後のプログラムで間違って要素の値を書き換えないように変数の割り当てを明示的に解除しています。
サンプルコード
▼Example-again10-1.php
<!DOCTYPE html><html lang=”ja”><head><meta http-equiv=”Content-Type” content=”text/html;charset=UTF-8″ /><title>PHPテスト</title></head><body>
<p>PHPのテストです。</p>
<p><?php$pricelist = array(80, 100, 120);
foreach ($pricelist as &$value){$value *= 1.05;}unset($value);
foreach ($pricelist as $value){print $value.'<br />’;}?></p>
</body></html>
上記のファイルをwwwサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。