2014-09-26 138 views
0

我有2个数组。我想合并它们。数组与多维数组合并

阵列1:

Array 
(
[100] => 
[50] => 
[CREDIT] => 14.31 
[CHEQUE] => 
) 

阵列2:

Array 
(
[0] => Array 
    (
     [id] => 501 
    ) 
[1] => Array 
    (
     [id] => 502 
    ) 
[2] => Array 
    (
     [id] => 503 
    ) 

我与$array1+$array2合并后,他们得到这个结果:

Array 
(
[100] => 
[50] => 
[CREDIT] => 14.31 
[CHEQUE] => 
[0] => Array 
    (
     [id] => 501 
    ) 
) 

而且我EXPE结果是:

Array 
(
[100] => 
[50] => 
[CREDIT] => 14.31 
[CHEQUE] => 
[0] => Array 
    (
    [0] => Array 
     (
      [id] => 501 
     ) 
    [1] => Array 
     (
      [id] => 502 
     ) 
    [2] => Array 
     (
      [id] => 503 
     ) 
    ) 
) 

可能是什么原因?谢谢。

+1

你尝试过'array_merge($ array1,$ array2)'吗? – Mir 2014-09-26 16:50:07

+0

我的数组中有数字'KEYS'。我无法使用该功能。 – 2014-09-26 16:50:36

+0

'$ array1 [0] = $ array2'如何? – Sadiq 2014-09-26 16:59:46

回答

0

在您的具体情况和作为$ Sadiq提到,我只会做$array1[0] = $array2

$arr1 = [ 
    '100' => '', 
    '50' => '', 
    'CREDIT' => 14.31, 
    'CHEQUE' => '' 
]; 

$arr2 = [ 
    '0' => [ 
     'id' => 501 
    ], 
    '1' => [ 
     'id' => 502 
    ], 
    '2' => [ 
     'id' => 503 
    ], 
]; 

$arr1[0] = $arr2; 
print_r($arr1); 

输出

Array 
(
    [100] => 
    [50] => 
    [CREDIT] => 14.31 
    [CHEQUE] => 
    [0] => Array 
     (
      [0] => Array 
       (
        [id] => 501 
       ) 

      [1] => Array 
       (
        [id] => 502 
       ) 

      [2] => Array 
       (
        [id] => 503 
       ) 

     ) 

) 
+0

@Ronak这有帮助吗? :) – 2014-10-02 10:38:31

0
$arr1= array(100=>'',50=>'','CREDIT'=>14.31,'CHEQUE'=>''); 
print_r($arr1); 

$arr2 = array(0 => array('id' => 501),1 => array ('id' => 502),2 => array('id'=> 503)); 
print_r($arr2); 

$result = $arr1 + array($arr2); 
print_r($result); 

结果:

Array 
    (
     [100] => 
     [50] => 
     [CREDIT] => 14.31 
     [CHEQUE] => 
    ) 

    Array 
    (
     [0] => Array 
      (
       [id] => 501 
      ) 

     [1] => Array 
      (
       [id] => 502 
      ) 

     [2] => Array 
      (
       [id] => 503 
      ) 

    ) 

    Array 
    (
     [100] => 
     [50] => 
     [CREDIT] => 14.31 
     [CHEQUE] => 
     [0] => Array 
      (
       [0] => Array 
        (
         [id] => 501 
        ) 

       [1] => Array 
        (
         [id] => 502 
        ) 

       [2] => Array 
        (
         [id] => 503 
        ) 

      ) 

    ) 
0

这些会因为你需要尽可能多的阵列和所需要的许多方面的工作。

对于这些功能,设置的最高优先级排列到最低指数:

function overlapArrays($array) { 
    if(count($array) > 1) { 
     for($i = (count($array) - 1);$i >= 0;$i--) { 
      if(($i - 1) >= 0) { 
       prioritize($array[$i], $array[$i - 1]); 
      } 
      else { 
       break; 
      } 
     } 
     return $array[0]; 
    } 
    else { 
     return $array; 
    } 
} 

function prioritize($arr1, &$arr2) { 
    foreach($arr1 as $key => $value) { 
     if(!array_key_exists($key, $arr2)) { 
      $arr2[$key] = $value; 
     } 
     elseif(is_array($value) && is_array($arr2[$key])) { 
      prioritize($value, $arr2[$key]); 
     } 
    } 
} 

$array1 = [ 
    100 => '', 
    50 => '', 
    'CREDIT' => 14.31, 
    'CHEQUE' => '' 
]; 

$array2 = [ 
    0 => [ 
     'id' => 501 
    ], 
    1 => [ 
     'id' => 502 
    ], 
    2 => [ 
     'id' => 503 
    ] 
]; 

$merger = Array($array1, $array2); 

$results = overlapArrays($merger); 

举例来说,如果你想存在两个第一阵列和第二阵列中的第一阵列中被保存下来,然后键您将第一个数组分配给合并数组中的0索引。如果您希望array2在匹配时保留值,则将array2分配给0索引。

$array1 = Array(
    'one' => Array(
     'two' => 2, 
     'three' => 3 
    ) 
); 
$array2 = Array(
    'one' => Array(
     'two' => 3, 
    ) 
); 
$merger = Array($array2, $array1); 

$results = overlapArrays($merger); 

结果=

Array(
    'one' => Array(
     'two' => 3, 
     'three' => 3 
    ) 
); 

与合并数组中的最高索引的阵列具有最低优先级。合并数组中索引最小的数组具有最高的优先级。让我知道你是否有足够的问题。我试图确保我解释得很好。