2012年1月22日日曜日

array_merge()と演算子「+」

phpで配列を結合する関数がある。「array_merge()」だ。

よく使うパターンはこんなシーン。

$a = array_merge($a, $b);

$aと$bが連想配列なら同じことを

$a = $b+$a;

と書ける。
足し算だが「+」演算子の左右の変数を入れ替えると結果が変わってしまう。
共通のキーがあった場合に、上書きをしないからだ。

$a=array(
 'x'=>'aX',
 'y'=>'aY',
);
$b=array(
 'y'=>'bY',
 'z'=>'bZ',
);

だった場合、
$a+$b
array(
 'x'=>'aX',
 'y'=>'aY',
 'z'=>'bZ',
);
となり、
$b+$a

array(
 'x'=>'aX',
 'y'=>'bY',
 'z'=>'bZ',
);
になる

$aと$bに共通のキーがないか、共通だった場合、$aを採用するならば
$a += $b;
と書くことができる。

連想配列の変数名は長めになることが多いのでこの書き方ができればありがたいが、
ここまで短く書けるシーンにあまりであったことがないのが残念。
でもこうして整理してみると、パラメータ$aをデフォルト値$bで補完する場合に使えそうだなあ。

$a, $bが通常の整数をキーに持つ普通の配列だった場合、「+」演算子の挙動はarray_mergeの挙動と著しく違うので知らないととまどう。
array('a1','a2','a3')+array('b1','b2','b3')
の結果はどうなるか?

array('a1','a2','a3')
となる

0 件のコメント:

コメントを投稿