2017-07-03 83 views
1

值我有兩個數組合併兩個數組,更換的相同的密鑰

第一個數組

(
    [0] => Array 
     (
      [352] => 1 
      [128] => 
      [64] => 
      [70] => 2 
     ) 
) 

第二個數組是這樣的:

Array 
(
    [0] => Array 
     (
      [128] => 1.5 
     ) 
) 

我要讓這樣最終陣列(我想在這個例子中將匹配存儲到主數組中,它是128 - > 1.5)我該怎麼做。

Array 
(
    [0] => Array 
     (
      [352] => 1 
      [128] => 1.5 
      [64] => 
      [70] => 2 
     ) 

) 

這裏是我的數組變量:

print_r($listskilssresult); 
print_r($listskilssresultmatching); 
+0

'array_merge()'會有所幫助。 –

+0

也許沒有足夠的信息。如果第一個數組的值爲空,你只想存儲匹配嗎?還有其他條件嗎?如果兩個陣列中存在相同的密鑰但它們具有不同的值,會怎麼樣?在您可以正確編寫代碼之前,您必須考慮所有條件。 – Difster

回答

5

您需要使用array_replace_recursive

$listskilssresult = [ 
    [ 
     352 => 1, 
     128 => '', 
     64 => '', 
     70 => 2 
    ] 
]; 

$listskilssresultmatching = [ 
    [ 
     128 => 1.5 
    ] 
]; 


print_r(array_replace_recursive($listskilssresult, $listskilssresultmatching)); 

打印:

Array 
(
    [0] => Array 
     (
      [352] => 1 
      [128] => 1.5 
      [64] => 
      [70] => 2 
     ) 

) 

知道array_replace_recursivearray_merge_recursive之間的差異here

+0

thankx @thamilian它像一個魔法。 –

+2

這是正確的 –

2

對於這個解決方案,你必須使用array_merge()內置PHP函數。

語法:

$finalArray = array_merge($array1, $array2); 
print_r($finalArray) 

實施例:

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

輸出:

Array 
(
    [color] => green 
    [0] => 2 
    [1] => 4 
    [2] => a 
    [3] => b 
    [shape] => trapezoid 
    [4] => 4 
) 

參考:http://php.net/manual/en/function.array-merge.php

1

array_merge會爲你做的工作:

array_merge($listskilssresult,$listskilssresultmatching) 
+0

'陣列 ( [0] =>數組 ( [352] => 1 [128] => [64] => [23] => [70] => 2 ) [1] =>數組 ( [128] => 1.5 ) )' 當我使用陣列合併它是未來這樣 –

1

這是特定於您的問題。如果你想使某些東西更加自動化,你可以創建一個函數。但是,這會做你想要什麼:

<?php 

    $array1 = [[352 => 1, 128 => null, 64 => null, 70 => 2]]; 
    $array2 = [[128 => 1.5]]; 

    $keys1 = array_keys($array1[0]); 
    $keys2 = array_keys($array2[0]); 

    foreach ($keys1 as $key => $value) { 
    if (in_array($value, $keys2)) { 
     $array1[0][$value] = $array2[0][$value]; 
     unset($array2[0][$value]); 
    } 
    } 

    if (!empty($array2[0])) { 
    foreach ($array2[0] as $key => $value) { 
     $array1[0][$key] = $value; 
     unset($array2[0][$key]); 
    } 
    } 

    print_r($array1[0]); 
?> 

最後if語句將第2個數組的第一個,如果沒有匹配的發現他們(從foreach語句)添加鍵+值。如果您只想添加匹配的鍵,則可以刪除該條件。

相關問題