foreach文で、配列の要素の値を変更

foreach文のループ(繰り返し)処理の中で、配列の要素の値を変更したいときは、配列の要素の値を代入する変数の前に&を付け、参照渡しで代入する。

使い方

配列の各要素の値を取得

foreach ( 配列 as &変数 ) {
    処理文
}
unset( 変数 ); // 最後の要素の値への参照を解除

配列から値を取り出し、値を変数に参照渡しで代入し、処理文を実行する。一連の処理を、配列の要素数分繰り返す。

処理文中において、変数の値を変更すると、配列の要素の値も変更する。

unset()で、最後の要素の値への参照を解除しておく。

配列の各要素のキーと値を取得

foreach ( 配列 as 変数A => &変数B ) {
    処理文
}
unset( 変数B ); // 最後の要素の値への参照を解除

配列から各要素のキーと値を取り出し、キーを変数Aに、値を変数Bに参照渡しで代入し、処理文を実行する。一連の処理を、配列の要素数分繰り返す。

処理文中において、変数Bの値を変更すると、配列の要素の値も変更する。

unset()で、最後の要素の値への参照を解除しておく。

サンプル

配列の各要素の値を取得

<?php
$varArray = array( 1, 2, 3 );
foreach ( $varArray as &$varValue ) {
    $varValue = $varValue * 10;
}
unset( $varValue );
foreach ( $varArray as $varValue ) {
    echo $varValue . ', ';
}
?>

↓↓↓出力結果↓↓↓

10, 20, 30,

配列の各要素のキーと値を取得

<?php
$varArray = array(
    "red" => "赤",
    "blue" => "青",
    "yellow" => "黄"
);
foreach ( $varArray as $varKey => &$varValue ) {
    $varValue = $varValue . '色';
}
unset( $varValue );
foreach ( $varArray as $varKey => $varValue ) {
    echo '<p>';
    echo $varKey . ': ' . $varValue;
    echo '</p>';
}
?>

↓↓↓出力結果↓↓↓

red: 赤色
blue: 青色
yellow: 黄色

注意

foreach文において、配列の要素の値を参照渡しで代入するには、ループ(繰り返し)処理させる配列は、変数で指定する必要がある。

したがって、下のPHPコードは、動作しない。

<?php
foreach ( array( 1, 2, 3 ) as &$varValue ) {
    $varValue = $varValue * 10;
}
?>

スポンサード リンク

カテゴリー: foreach, PHP, 制御構造 タグ: パーマリンク