2013-10-03 142 views
0

我已经看过这个网站,并找到了一些合并数组的示例,但说实话,我不确定哪一个适合我。我怎样才能将两个数组合并为一个

我很难尝试合并这些数组。我试过array_combine和array_merge,但我没有任何运气。

我所需要的是一个单一的阵列,这样的输出:

Array 
(
    [0] => Array 
     (
      [UnitNo] => 91 
      [Name] => Receiving 
      [ActivityNo] => 
      [Active] => 2 
      [CallNo] => 
      [CallStatusNo] => 
      [Assigned] => 
      [UnitId] => 2 
     ) 
    [1] => Array 
     (
      [UnitNo] => 83 
      [Name] => Shipping 
      [ActivityNo] => 
      [Active] => 
      [CallNo] => 
      [CallStatusNo] => 
      [Assigned] => 
      [UnitId] => 1 
     ) 
) 

这些是两个阵列,我需要基于所述UnitId应该形成像上面的一个完整的阵列合并到一起。我只是不知道该怎么做。如果有人能指导我,我会很感激。

// Array #1 
Array 
(
    [0] => Array 
     (
      [UnitId] => 2 
      [UnitNo] => 91 
      [Name] => Receiving 
      [Active] => 4 
     ) 

    [1] => Array 
     (
      [UnitId] => 1 
      [UnitNo] => 83 
      [Name] => Shipping 
      [Active] => 4 
     ) 
) 
// Array #2 

Array 
(
    [0] => Array 
     (
      [UnitId] => 2 
      [ActivityNo] => 1 
      [CallNo] => 1 
      [CallStatusNo] => 1 
      [Assigned] => 1 
     ) 

    [1] => Array 
     (
      [UnitId] => 1 
      [ActivityNo] => 11 
      [CallNo] => 2 
      [CallStatusNo] => 1 
      [Assigned] => 1 
     ) 

) 
+0

你应该看看文档:http://php.net/manual/en/function.array-merge.php – Lefsler

+0

@demonofnight,谢谢。如果array_merge会为我工作,那么我会更多地研究这个函数。我只是想确定它会做我所需要的。谢谢! – NaN

回答

0

这不是你可以只使用php函数并调用它的好例子 - 你将不得不做一些你自己的自定义逻辑。

这将工作,但前提是$array1$array2在每个索引处具有相同的项目。

$array1; 
$array2; 
$mergedArray; 

for ($i=0; $i++; $i < count($array1) - 1) { 
    //first add all the values from array1 
    $mergedArray[$i] = $array1[$i]; 

    foreach($array2[$i] as $array2Key=>$array2Value){ 
     //now check for missing key/values that are in array2 but not in array1 
     if (array_key_exists($array2Key, $array1[$i]) == false) { 
      // the key does not exist in array1, so add it to mergedArray 
      $mergedArray[$i][$array2Key] = $array2Value; 
     } 
    } 
} 

如果您的数组是由关联数组索引的唯一值,那将更安全。

+0

谢谢你的答案,BDF – NaN