2012-03-12 148 views
3

结合两个不相等的阵列我想这两个阵列组合成以下一个。更具体地说,我想将第二个数组的内容添加到第一个数组中的匹配键。最终数组中的键应该具有两个数组的匹配键的内容。通过匹配的密钥

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

能否请您在此提供样品输出数组? – 2012-03-12 23:26:43

+0

有什么条件?看起来你正在这里按时运作。如果我添加并超过了'23:59',会发生什么?都是数组总是相等的,还是有可能一个数组比另一个有更多的项目?两个数组是否都包含相同的项目,或者是否有一个项目在一个数组中而不是另一个? – Joseph 2012-03-12 23:27:55

+0

嗨@Teez,array_merge输出一个数组,它是两者的简单组合。 foreach方法输出一个空值的数组,并且arr1没有值。 array_combine给出了“两个参数应该有相同数量的元素......”的错误。 – 2012-03-12 23:35:38

回答

6

好了,所以我有两个数据数组和空单持有新阵列

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

要结合他们基于关键

foreach($array1 as $k=>$v) 
{ 
    if(array_key_exists($k, $array2)) 
    { 
     $array3[$k] = array($v, $array2[$k]); 
    } 
} 

$ ARRAY3持有新的数组。如果你想覆盖原来的数组只需添加

$array1 = $array3; 

如果你想为ARRAY3来保存ARRAY2没有必须和阵列1也已再添加其他的在foreach

else 
{ 
    $array3[$k] = array($v, null); 
} 
内的细胞

这是为了使它所以该阵列被通过它均匀地成形为当你循环。

这将期待通过array1中的每一个元素,检查阵列2在阵列1的每个键,如果存在的话,在那个关键抱着前面的两个阵列的数据为关键词追加新的数组。

+0

嗨@Jake,谢谢你的回答。我得到它的工作。太感谢了! – 2012-03-12 23:56:00

+0

很高兴我能帮到你。 – Jake 2012-03-13 00:03:38

+0

谢谢你,我只是碰到这个和调整有点我的目的,但你的解释让我过在我的工作项目中的大驼峰。谢谢! – kjones 2012-06-05 19:20:58