2012-04-20 4 views
0

あなたが誤解を招くタイトルを見つけた場合は、ごめんなさい。私は本当にこの質問の良いタイトルを考え出すことができませんでした。array_merge_recursiveを使って配列をマージしますが、配列に追加された新しい内容のものだけを処理しますか?

私は関数の中で一緒にマージしてることを、二つの配列を持つ:

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

しかし、私のようにする必要があります

$arr1['something']['secondary_something'][]="foo1"; 
$arr1['something']['secondary_something'][]="foo2"; 
$arr1['something']['secondary_something'][]="foo3"; 

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

function something($array_, $array_new) { 

$array=array_merge_recursive($array_,$array_new); // to combine/merge both arrays 

print_r($array);//debugg 

} 

今、その関数は、単純に(すべての良いです)、これを印刷しますプライマリアレイにマージされた新しいデータを処理します。だから私は$arr2を働かせる必要がありますが、一度それが$arr1とマージされています。

「新しいデータを扱う」必要があると言うとき、var_export()は私が配列で行う必要があることの1つです。私は単にecho var_export($array_new,true);を行う場合

、私はこれを取得:

array ('something' => array ('secondary_something' => array (0 => 'foo4', 1 => 'foo5',),),) 

私はこれが必要な場合:

array ('something' => array ('secondary_something' => array (3 => 'foo4', 4 => 'foo5',),),) 

^^お知らせを配列のキーは、3と4ではなく1と2ですかプライマリアレイ($arr1)とマージされているためです。

皆さんは私が何をしようとしているのか理解してくれることを願っています。

アイデア?

感謝のxD

+0

array_mergeは本当に必要ですか?新しい要素を常に追加していて、両方の配列で同じ要素をスキップする必要がない場合は、それらを手動で配列に追加するだけで済みます。手動で追加した場合は、array_popとcountを使用して情報を取得し、新しい項目を新しい配列に追加する必要があります。おそらくarray_popではないので、古い配列からそれを削除しますが、 'var_export($ array、true)'と同じように配列のすべてを返すことを私が言っているのは – mseancole

答えて

0
echo var_export(array_intersect($array['something']['secondary_something'], $arr2['something']['secondary_something']), true); 

EDITこれは動作しますが、あなたは、配列の多次元側面を失います。 somethingsecondary_somethingアスペクトをvar_exportに保存する場合は、配列全体をステップ実行するための再帰関数を作成する必要があります

+0

です。 –

+0

それは多次元配列であるという事実と関係がある、私はそれに取り組んでいる – SupremeDud