連想配列のarray_push

notoです。

array_pushという関数がありますが、連想配列でも同じことをやりたい場合どうするか、ちらっとハマったので備忘録的に。

期待している結果は、添え字が全てキーとなる。

1
2
3
4
Array [3]
    'hoge' => 'noto'
    'piyo' => 'sakemi'
    'fuga' => 'iyama'

array_push

1
2
3
4
5
6
7
8
$result = array();

$foo = array('hoge' => 'noto');
$bar = array('piyo' => 'sakemi',
             'fuga' => 'iyama');

array_push($result,$foo);
array_push($result,$bar);

結果

1
2
3
4
5
6
result Array [2]
 [0] =>
    'hoge' => 'noto'
    'piyo' => 'sakemi'
 [1] =>
    'fuga' => 'iyama'

まぁこうなるよね。。。 ちらっとカンニングをしたところ「+」演算子を使うと可能なようだ。

配列演算子「+」

1
2
3
4
5
6
7
8
$result = array();

$foo = array('hoge' => 'noto');
$bar = array('piyo' => 'sakemi',
             'fuga' => 'iyama');

$result += $foo;
$result += $bar;

結果

1
2
3
4
result Array [3]
    'hoge' => 'noto'
    'piyo' => 'sakemi'
    'fuga' => 'iyama'

期待した結果を得ることができました。 PHPって配列演算子なるものがあるのね。しらなかったよ。。。

Comments