2015-11-03 5 views
2

Я нашел несколько сообщений, но никто не работает. Пробовал array_merge, array_replace_recursive, array_merge_recursive, но не выполнил мою задачу.Объединить многомерные массивы

Я хочу объединить 5 массивов ниже в один массив, но я не понимаю, почему меняются годы. Является ли это из-за того, что документация говорит:

Если, однако, массивы имеют одинаковый числовой ключ, позднее значение не перезаписывает исходное значение, но будет добавлен.

<?php 
$a['x'][2015]['s'] = "xxxxxx"; 
$a['x'][2015]['d'] = 1; 

$b['x'][2014]['s'] = "yyyyyyyyy"; 
$b['x'][2014]['d'] = 3; 

$c['x'][2013]['s'] = "sssssss"; 
$c['x'][2013]['d'] = 22; 

$d['x'][2012]['s'] = "ddddddddddddd"; 
$d['x'][2012]['d'] = 21; 


$f['x'][2011]['s'] = "ffffffff"; 
$f['x'][2011]['d'] = 52; 


$e = array(); 

$e = array_replace_recursive ($e,$a); 
$e = array_replace_recursive ($e,$b); 
$e = array_replace_recursive ($e,$c); 
$e = array_replace_recursive ($e,$d); 
$e = array_replace_recursive ($e,$f); 

echo json_encode($e); 
?> 

Выходной Я получаю { "х": { "2015": { "S": "XXXXXX", "г": 1}, "2016": { "S": "YYYYYYYYY"}, "2017": { "d": 3}, "2018": { "s": "SSSSSSS", "d": 22}, "2019": { "s": "ddddddddddddd", "d": 21}, "2020": { "s": "FFFFFFFF", "d": 52}}}

EDIT: К сожалению, array_replace_recursive дает правильный результат. Я делал что-то неправильно в phpfiddle.org моделирования ....

+0

Как должен выглядеть вывод? Пожалуйста, отредактируйте свой вопрос. –

ответ

0

Я вам не верю. Я даже казнили свой код (используя array_replace_recursive) и имеют следующий результат:

{ 
    "x": { 
     "2015": { 
      "s": "xxxxxx", 
      "d": 1 
     }, 
     "2014": { 
      "s": "yyyyyyyyy", 
      "d": 3 
     }, 
     "2013": { 
      "s": "sssssss", 
      "d": 22 
     }, 
     "2012": { 
      "s": "ddddddddddddd", 
      "d": 21 
     }, 
     "2011": { 
      "s": "ffffffff", 
      "d": 52 
     } 
    } 
} 

Может быть, вы сделали что-то еще? И да, array_merge_recursive в данном случае не является вариантом.

+0

О, черт возьми .. я думаю, что что-то испортилось в phpfiddle.org .... что бы я ни изменял, это не меняет выход ... – abdfahim

Смежные вопросы