PHPでのプログラムでは変数の参照を扱う場合には、変数の先頭に & を付けます。 配列の要素を操作する場合には以下の様に、配列の中身を受ける変数の先頭に & を付けて処理します。
以下の例では、数値配列を設定し、配列内の要素の値を10倍しています。
<?php
//配列宣言
$arrData0 = array(1, 2, 3);
var_dump($arrData0);
//配列の値を「$arrValue」で受ける
foreach ($arrData0 as &$arrValue) {
//値を10倍する
$arrValue *= 10;
}
//最後の要素の参照を解放
unset($arrValue);
//内容の表示
var_dump($arrData0);
?>
結果は以下の表示になります。
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
array(3) {
[0]=>
int(10)
[1]=>
int(20)
[2]=>
int(30)
}
配列の全ての要素が10倍されていることが分かります。
ここで、別々の変数の参照を配列に持ち処理する方法を示します。
<?php
//3個の変数を宣言
$data1 = 1;
$data2 = 2;
$data3 = 3;
//3個の変数を二重配列にして参照配列の宣言
$arrData = array(
array( &$data1 )
, array( &$data2 )
, array( &$data3 )
);
//二重配列のループ処理で各変数の値を10倍する
foreach ($arrData as $arrValue) {
$arrValue[0] *= 10;
}
//内容の表示
var_dump($arrData);
var_dump($data1);
var_dump($data2);
var_dump($data3);
?>
この結果は以下の様に、3個の変数の値がそれぞれ10倍されたことが分かります。
array(3) {
[0]=>
array(1) {
[0]=>
&int(10)
}
[1]=>
array(1) {
[0]=>
&int(20)
}
[2]=>
array(1) {
[0]=>
&int(30)
}
}
int(10)
int(20)
int(30)
PR
コメント