忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

【PHP】配列の中に参照変数を持つことで別々の変数の要素を操作する

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

コメント

コメントを書く