foreach文のループ(繰り返し)処理の中で、配列の要素の値を変更したいときは、配列の要素の値を代入する変数の前に&
を付け、参照渡しで代入する。
使い方
配列の各要素の値を取得
foreach ( 配列 as &変数 ) {
処理文
}
unset( 変数 ); // 最後の要素の値への参照を解除
処理文
}
unset( 変数 ); // 最後の要素の値への参照を解除
配列から値を取り出し、値を変数に参照渡しで代入し、処理文を実行する。一連の処理を、配列の要素数分繰り返す。
処理文中において、変数の値を変更すると、配列の要素の値も変更する。
unset()で、最後の要素の値への参照を解除しておく。
配列の各要素のキーと値を取得
foreach ( 配列 as 変数A => &変数B ) {
処理文
}
unset( 変数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 . ', ';
}
?>
$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>';
}
?>
$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: 黄色
blue: 青色
yellow: 黄色
注意
foreach文において、配列の要素の値を参照渡しで代入するには、ループ(繰り返し)処理させる配列は、変数で指定する必要がある。
したがって、下のPHPコードは、動作しない。
<?php
foreach ( array( 1, 2, 3 ) as &$varValue ) {
$varValue = $varValue * 10;
}
?>
foreach ( array( 1, 2, 3 ) as &$varValue ) {
$varValue = $varValue * 10;
}
?>