2012-03-12 22 views
3

以下の2つの配列を組み合わせて1つにしたいと思います。具体的には、2番目の配列の内容を1番目の配列の一致するキーに追加したいとします。最後の配列のキーには、両方の配列の一致するキーの内容が含まれている必要があります。私がこれまで試したどのようなキーを一致させて2つの不等な配列を結合する

Array ( 
[123456789_404045862944400] => 192 
[123456789_403274909688162] => 186 
[123456789_402735273075459] => 311 
[123456789_252948031457462] => 385 
[123456789_400606749954978] => 287 
[123456789_286755318061725] => 358 
[123456789_399687880046865] => 257 
[123456789_398332190182434] => 240 
[123456789_397768486905471] => 311 
[123456789_396907650324888] => 293 
[123456789_394850557197264] => 496 
[123456789_394121230603530] => 475 
[123456789_369757766367627] => 488 
[123456789_391602517522068] => 506 
[123456789_390848830930770] => 437 
[123456789_389975351018118] => 452 
[123456789_242486689170043] => 525 
[123456789_388151047867215] => 415 
[123456789_387476447934675] => 502 
[123456789_386620518020268] => 467 
[123456789_215937481836499] => 359 
) 

Array (
[123456789_404045862944400] => 23:52 
[123456789_403274909688162] => 22:21 
[123456789_402735273075459] => 04:29 
[123456789_252948031457462] => 06:22 
[123456789_400606749954978] => 05:01 
[123456789_286755318061725] => 04:51 
[123456789_399687880046865] => 21:51 
[123456789_398395260176127] => 01:13 
[123456789_398332190182434] => 23:19 
[123456789_397768486905471] => 05:38 
[123456789_397509266931393] => 00:46 
[123456789_396907650324888] => 03:38 
[123456789_394850557197264] => 05:12 
[123456789_394121230603530] => 04:15 
[123456789_369757766367627] => 04:01 
[123456789_391602517522068] => 03:44 
[123456789_390848830930770] => 06:05 
[123456789_389975351018118] => 04:00 
[123456789_242486689170043] => 04:13 
[123456789_388151047867215] => 00:22 
[123456789_387544787927841] => 07:34 
[123456789_387476447934675] => 04:51 
[123456789_386620518020268] => 06:05 
[123456789_386504878031832] => 02:38 
[123456789_215937481836499] => 01:10 
) 

$array1 = array_merge($array1, $array2); 

も何かしようとした:

foreach($arr2 as $k=>$v) { 
    $a[$k] = $arr1[$k]; 
} 

をしかし、それは正確に一致するキーも/結合配列をマージしません。

私もarray_combineで試してみましたが、キーの配列とキーの値の配列を使って配列を作成しています。

+0

サンプル出力配列をここに入力してください。 –

+0

条件は何ですか?あなたはここで時間通りに働いているようです。もし私が追加して、それが「23:59」を超えるとどうなりますか?両方の配列が常に等しいか、または1つの配列に他のものより多くの項目がある可能性がありますか?両方の配列に同じ項目が含まれているか、または一方の配列にあり、もう一方の配列にはない項目がありますか? – Joseph

+0

こんにちは@Teez、array_mergeは、両方の単純な組み合わせである1つの配列を出力します。 foreachアプローチは、空の値を持ち、arr1の値を持たない1つの配列を出力します。 array_combineは、 "両方のパラメータが同じ数の要素を持つ必要があります..."というエラーを返します。 –

答えて

6

わかりましたので、私は新しい配列

$array1 = array('key1'=>'value1'); 
$array2 = array('key2'=>'value2'); 
$array3 = array(); 

を保持するために、2つのデータの配列や空のものを持って、それらを結合するに基づいて、

キー

foreach($array1 as $k=>$v) 
{ 
    if(array_key_exists($k, $array2)) 
    { 
     $array3[$k] = array($v, $array2[$k]); 
    } 
} 
上の$ ARRAY3は、新しい配列を保持しています。あなたは元の配列を上書きしたい場合は、単に

$array1 = $array3; 

を追加すると、持っていませんでし及びアレイ1は、その後、foreachの

else 
{ 
    $array3[$k] = array($v, null); 
} 
の内側に他の追加きたARRAY2細胞を保持するためにARRAY3ためたい場合

これは、ループを通過する際に配列が均一になるようにするためです。それが存在する場合、そのキーについては、前の2列のデータを保持し、そのキーで新しいアレイを追加する、アレイ1の各キーの配列2をチェックし、配列1のすべての要素に目を通すだろう

+0

こんにちはジェイク、あなたの答えをありがとう。私はそれを働かせました。感謝万円! –

+0

うれしい私は助けることができます。 – Jake

+0

ありがとう、私はちょうどこれを見て、私の目的のために少し微調整しましたが、あなたの説明は、私が取り組んでいるプロジェクトの大きな塊の上に私を得た。ありがとう! – kjones

関連する問題