0

2つの配列があり、それらを関数にマージしようとしています。

$var1=array();
$myInputVar=array();
$var1['something']['secondary_something'][]="foo1";
$var1['something']['secondary_something'][]="foo2";
$var1['something']['secondary_something'][]="foo3";

$myInputVar['something']['secondary_something'][]="foo4";
$myInputVar['something']['secondary_something'][]="foo5";

function something(&$array_, $array_new) {
   $array = array_merge($array_ , $array_new); 

    print_r($array);//for debugging

}   
something($var1, $myInputVar);

今それは印刷します:

Array ( [something] => Array ( [secondary_something] => Array ( [0] => foo1 [1] => foo2 [2] => foo3 ) ) )

私が期待していたとき:

Array ( [something] => Array ( [secondary_something] => Array ( [0] => foo1 [1] => foo2 [2] => foo3 [3] => foo4 [4] => foo5) ) )

私も試しました:

$array = $array_ + $array_new;

それでも私が期待しているものは印刷されません。

関数の目的を誤解しているような気がするarray_merge()ので、期待していた結果が返ってこないのです。

何か案は?

4

3 に答える 3

1

試してみてくださいarray_merge_recursive()

于 2012-04-16T23:13:12.460 に答える
0

array_merge左から右に動作します。あなたの場合:

$array_['something']['secondary_something']

によって上書きされます

$array_new['something']['secondary_something']

次のことができます。

function something(&$array_, $array_new) {
    $array = array_merge($array_ , $array_new); 
    return $array;
}

$var1['something']['secondary_something'] = something($var1['something']['secondary_something'], $myInputVar['something']['secondary_something']);

それ以外の場合は、連想キーを認識し、配列を適切に結合する関数を作成する必要があります。

于 2012-04-16T23:16:21.000 に答える
0
function something(&$array_, $array_new) {
    foreach ($array_new as $val)
        foreach ($val as $val2)
            foreach ($val2 as $val3)
                array_push($array_['something']['secondary_something'], $val3);
    print_r($array_);//for debugging
}  
于 2012-04-16T23:27:33.267 に答える