builtin function

ビルトイン関数 - 詳細

Category: builtin_function

my_array_merge()

★配列と配列をマージする

関数

array my_array_merge (  array $ary1 , array [...]  )
★配列と配列をマージする
パラメータ

第1引数: array $ary1 // 可変長引数
第2引数: array [...]
戻り値

array
説明

配列のキーに文字列型と数値型が混在している場合でもキーの全てを文字列として扱いマージする。
多次元配列であってもその挙動は常に一貫して同じである。
キーが同名であった場合は後勝ちでの上書きとなる。
* 以下のテストを実施して理想的な結果を残している。
ex) テストパターン
$ary1 = array('010'=> array('aaa'=>'aaaval'));
$ary2 = array('010'=> array('bbb'=>'bbbval'));
$temp = my_array_merge($ary1, $ary2);
echoecho($temp, 'temp010'); // array ('010' => array('aaa' => 'aaaval', 'bbb' => 'bbbval',),)

$ary1 = array('10'=> array('aaa'=>'aaaval'));
$ary2 = array('10'=> array('bbb'=>'bbbval'));
$temp = my_array_merge($ary1, $ary2);
echoecho($temp, 'temp020'); // array (10 => array ('aaa' => 'aaaval', 'bbb' => 'bbbval',),)

$ary1 = array('10'=> array('aaa'=>'aaaval'));
$ary2 = array(10=> array('bbb'=>'bbbval'));
$temp = my_array_merge($ary1, $ary2);
echoecho($temp, 'temp030'); // array (10 => array ('aaa' => 'aaaval', 'bbb' => 'bbbval',),)

$ary1 = array('010'=> array('aaa'=>'aaaval'));
$ary2 = array('010'=> array('aaa'=>'bbbval'),
'020' =>array('ccc'=>'cccbal'));
$temp = my_array_merge($ary1, $ary2);
echoecho($temp, 'temp040'); // array ('010' => array ('aaa' => 'bbbval',), '020' => array ('ccc' => 'cccbal',),)

$ary1 = array('010'=> array('aaa'=>'aaaval'),
'020' => array('ccc'=>'cccbal'));
$ary2 = array('010'=> array('aaa'=>'bbbval'));
$temp = my_array_merge($ary1, $ary2);
echoecho($temp, 'temp050'); // array ('010' => array ('aaa' => 'bbbval',), '020' => array ('ccc' => 'cccbal',),)

$ary1 = array('010'=> 'aaa');
$ary2 = array('010'=> array('bbb'=>'bbbval'));
$temp = my_array_merge($ary1, $ary2);
echoecho($temp, 'temp060'); // array ('010' => array ('bbb' => 'bbbval',),)

$ary1 = array('010'=> array('bbb'=>'bbbval'));
$ary2 = array('010'=> 'aaa');
$temp = my_array_merge($ary1, $ary2);
echoecho($temp, 'temp070'); // array ('010' => 'aaa',)

$ary1 = array('aaa'=> array('010'=>'aaaval'));
$ary2 = array('aaa'=> array('020'=>'bbbval'));
$temp = my_array_merge($ary1, $ary2);
echoecho($temp, 'temp080'); // array ('aaa' => array ('010' => 'aaaval', '020' => 'bbbval',),)

$ary1 = array('aaa'=> array('010'=>'aaaval'));
$ary2 = array('aaa'=> array('020'=>'bbbval',
30=>'cccval'));
$temp = my_array_merge($ary1, $ary2);
echoecho($temp, 'temp090'); // array ('aaa' => array ('010' => 'aaaval', '020' => 'bbbval', 30 => 'cccval',),)

$ary1 = array('aaa'=> array('010'=>'aaaval'));
$ary2 = array('bbb'=> array('010'=>'bbbval',
30=>'cccval'));
$temp = my_array_merge($ary1, $ary2);
echoecho($temp, 'temp100'); // array ('aaa' => array ('010' => 'aaaval',),'bbb' => array ('010' => 'bbbval', 30 => 'cccval',),)

$ary1 = array('aaa'=> array('010'=>'aaaval',
'020'=>'a02val',
'030'=>'a03val'));
$ary2 = array('aaa'=> array('010'=>'bbbval',
'030'=>'cccval'));
$temp = my_array_merge($ary1, $ary2);
echoecho($temp, 'temp110'); // array ('aaa' => array ('010' => 'bbbval', '020' => 'a02val', '030' => 'cccval',),)

$ary1 = array("color" => array("favorite" => "red"), 5);
$ary2 = array(10, "color" => array("favorite" => "green", "blue"));
$temp = array_merge($ary1, $ary2);
echoecho($temp, 'array_merge'); // array ('color' => array ('favorite' => 'green', 0 => 'blue',), 0 => 5, 1 => 10,)
$temp = array_merge_recursive($ary1, $ary2);
echoecho($temp, 'array_merge_recursive'); // array ('color' => array ('favorite' => array (0 => 'red', 1 => 'green',), 0 => 'blue',), 0 => 5, 1 => 10,)
$temp = my_array_merge($ary1, $ary2);
echoecho($temp, 'my_array_merge'); // array ('color' => array ('favorite' => 'green', 0 => 'blue',), 0 => 10,)

■メモ
PHP関数のarray_merge()は、キーが数値と文字列とで挙動がいちいち変わるのが気に入らない。
array_merge() - ttp://manual.xwd.jp/function.array-merge.html
PHP関数のarray_merge_recursive()は多次元配列の挙動が気に入らない。
array_merge_recursive() - ttp://manual.xwd.jp/function.array-merge-recursive.html

002 - 2013/04/07 xirasaya: 可変長引数に対応。notice対策。
001 - 2010/02/08 xirasaya
ソースコード [表示]


[top]