2016-03-03 94 views
0

我有兩個數組,新數組鎖定在舊數組複製鑰匙,更換與新數組值值,合併兩個數組,找到重複鍵和更新值

舊陣列

Array 
(
    [tool_situs] => Array 
     (
      [template] => aa 
      [title] => bb 

     ) 

[style] => Array 
     (
      [.title] => Array 
       (
        [color] => red 
        [font-size] => 20px 

       ) 

     ) 

) 

和新陣列

Array 
(
    [tool_situs] => Array 
     (
      [title] => ddd 
     ) 

    [style] => Array 
     (
      [.title] => Array 
       (
        [color] => #fff 

       ) 

     ) 

) 

我已經使用array_merge_recursive()但不能代替重複鍵的值嘗試,僅從新陣列

添加新的價值
Array 
(
    [tool_situs] => Array 
     (
      [template] => aa 
      [title] => Array 
      (
       [0] => aa 
       [1] => ddd 
      ) 

     ) 

[style] => Array 
     (
      [.title] => Array 
       (
        [color] => Array 
        (
         [0] => red 
         [1] => #fff 
        ) 
        [font-size] => 20px 

       ) 

     ) 

) 
在陣列ebove

tool_situs->標題僅從新陣列添加新的陣列,也風格 - >標題 - >顏色回報由NE陣列添加新的價值。

幫我tool_situs->標題和風格都值如何 - >標題 - >顏色更換新陣列的價值這樣

我會出來把這樣的:

Array 
(
    [tool_situs] => Array 
     (
      [template] =>aa 
      [title] => ddd 
     ) 

    [style] => Array 
     (
      [.title] => Array 
       (
        [color] => #fff 
        [font-size] => 20px 
       ) 

     ) 

) 
+1

*我已嘗試使用* ...?試圖使用什麼? – Rizier123

+0

歡迎來到SO。 請閱讀[我可以問哪些主題](http://stackoverflow.com/help/on-topic) 和[如何提出一個好問題](http://stackoverflow.com/help/how-to - 問) 和[完美的問題](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/) SO是**不是免費的編碼或教程服務* *你必須表明你已經努力解決你自己的問題。 – RiggsFolly

+0

@ TSaddamFahmiMicely check [array_replace_recursive](http://php.net/manual/en/function.array-replace-recursive.php) – jitendrapurohit

回答

0

隨着人們都表示要使用array_replace_recursive()類似下面應該工作:

$updatedStyles = array_replace_recursive($currentStyles, $newStyles);

這對我來說將輸出以下數組:

Array 
(
    [tool_situs] => Array 
     (
      [template] => aa 
      [title] => ddd 
     ) 

    [style] => Array 
     (
      [title] => Array 
       (
        [color] => blue 
        [font-size] => 20px 
       ) 

     ) 

) 

能找到有關功能here的更多信息,您可以找到一個工作示例here

+0

我一直在尋找這個答案很長的時間,謝謝你,下次我會更徹底地區別array_replace_recursive和array_marge_recursive。謝謝你 –

0

array_replace_recursive是你需要的。

$array1 = your_first_array(); 
$array2 = your_second_array(); 

$result = array_replace_recursive($array1, $array2); 

var_dump($result); //result array is same as what you've shown as output in your question. 
相關問題