2014-09-26 137 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 
    ) 
); 

與合併數組中的最高索引的陣列具有最低優先級。合併數組中索引最小的數組具有最高的優先級。讓我知道你是否有足夠的問題。我試圖確保我解釋得很好。