2015-12-26 138 views
-3

我有這兩個數組,我想將它們合併爲一個。在第二個數組中使用0,1的重複值。下面是我希望它看起來如何的一個例子。我希望有人能幫幫忙。將陣列合併在一起

Array(
    [201500001] => Array 
     (
      [0] => 1003123603 
      [1] => 3062226597 
     ) 

    [201500002] => Array 
     (
      [0] => 3067005512 
     ) 

) 
Array(
    [1127893457] => Array 
     (
      [0] => 1003123603 
      [1] => 
     ) 

    [1127893467] => Array 
     (
      [0] => 1003133106 
      [1] => 3067005512 
     ) 

    [1127893443] => Array 
     (
      [0] => 1004146393 
      [1] => 3062226597 
     ) 

    [1127893246] => Array 
     (
      [0] => 1003154423 
      [1] => 5149282937 
     ) 

) 

預期輸出:使得一個的值被附加到以前的一個的端部

Array(
    [1127893457] => Array 
     (
      [0] => 1003123603 
      [1] => 
      [2] => 201500001 
     ) 

    [1127893467] => Array 
     (
      [0] => 1003133106 
      [1] => 3067005512 
      [2] => 201500002 
     ) 

    [1127893443] => Array 
     (
      [0] => 1004146393 
      [1] => 3062226597 
      [2] => 201500001 
     ) 

    [1127893246] => Array 
     (
      [0] => 1003154423 
      [1] => 5149282937 
      [2] => 
     ) 

) 
+0

我不明白你正在合併的方式來產生預期的輸出。你能更好地解釋它嗎? –

+0

必須這樣做,所以我可以跟蹤數據庫查詢 – Brandon

回答

0

我重寫了你的各種數組作爲有效數組。除此之外,我認爲你正在尋找的是使用array_intersect。這適用於我:

$source = array(
    201500001 => array(
     0 => 1003123603, 
     1 => 3062226597 
    ), 
    201500002 => array(
     0 => 3067005512 
    ) 
); 

$target = array(
    1127893457 => array(
     0 => 1003123603 
    ), 
    1127893467 => array(
     0 => 1003133106, 
     1 => 3067005512 
    ), 
    1127893443 => array(
     0 => 1004146393, 
     1 => 3062226597 
    ), 
    1127893246 => array(
     0 => 1003154423, 
     1 => 5149282937 
    ) 
); 

$expected = array(
    1127893457 => array(
     0 => 1003123603, 
     2 => 201500001 
    ), 
    1127893467 => array(
     0 => 1003133106, 
     1 => 3067005512, 
     2 => 201500002 
    ), 
    1127893443 => array(
     0 => 1004146393, 
     1 => 3062226597, 
     2 => 201500001 
    ), 
    1127893246 => array(
     0 => 1003154423, 
     1 => 5149282937 
    ) 
); 

$newArray = []; 

foreach ($target as $targetKey => $targetValue) { 
    foreach ($source as $sourceKey => $sourceValue) { 
     if (array_intersect($sourceValue, $targetValue)) { 
      $targetValue[2] = $sourceKey; 
     } 
     $newArray[$targetKey] = $targetValue; 
    } 
} 

echo ($newArray === $expected) ? "Match!" : "Miss." . PHP_EOL; 
+0

謝謝解決了我的問題! – Brandon

0

用於合併一個或多個陣列的元件一起。它返回結果數組。

<?php 
$array1 = array("color" => "red", 2, 4); 
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4); 
$result = array_merge($array1, $array2); 
print_r($result); 
?> 
+0

請看看預期的輸出。 Array_merge不起作用。 – Brandon