2016-03-03 2 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-> название только добавить новый массив из нового массива, а также стиля. -> Заголовок-> цвет возвращения добавить новое значение из массива п.

помочь мне, как и значение 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 -ask) И [идеальный вопрос] (http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/) SO ** - не бесплатное кодирование или учебная служба * * Вы должны показать, что вы приложили некоторые усилия для решения своей проблемы. – RiggsFolly

+0

@TSaddamFahmiMoely 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. 
Смежные вопросы