foreach文で配列の要素への参照を取得する
foreach 文を使うと、配列やオブジェクトの要素を順に取り出して処理することができます。通常は要素の値を取得しますが、繰り返し処理の中で配列の値を変更したい場合は、値ではなく要素への参照を取得することも可能です。ここでは PHP で foreach 文を使って配列の要素への参照を取得する方法について解説します。
foreach文で配列の要素への参照を取得する
foreach 文を使用することで、要素のキーや値を取得できますが、要素への参照を取得することもできます。要素への参照を取得することで、要素の値を変更することができます。要素への参照を取得するには次の書式を使用します。
foreach (配列変数 as &変数){
実行する処理1;
実行する処理2;
・・・
}
変数の前に & を付けることで要素の値に対する参照を設定することができます。
例えば次のように記述します。
$pricelist = array(80, 100, 120);
foreach ($pricelist as &$val){
$val *= 1.1;
}
unset($val);
今回の例では要素の値に対する参照を取得し、各要素の値を 1.1 倍して再度格納しています。
なお最後に unset 関数を呼び出しているのは、 foreach 文が終了しても変数 val には配列の最後の要素に対する参照が設定されたままのため、その後のプログラムで間違って要素の値を書き換えないように変数の割り当てを明示的に解除しています。
では簡単なプログラムで試してみます。
<?php
$pricelist = array(80, 100, 120);
foreach ($pricelist as $val){
echo $val."\n";
}
foreach ($pricelist as &$val){
$val *= 1.1;
}
unset($val);
foreach ($pricelist as $val){
echo $val."\n";
}
作成したプログラムを sample.php として保存しました。その後でコマンドプロンプトを起動し、次のように実行しました。
php sample.php
foreach 文を使って配列に含まれる値をいったん出力したあと、要素への参照を取得して配列に格納されている値を 1.1 倍にしました。そのあとであらてめて配列に含まれる値を出力しました。
-- --
PHP で foreach 文を使って配列の要素への参照を取得する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。