2016-12-12 5 views
0

У меня есть структура, ниже которой мне нужно превратиться в json_encoded. Чтобы наконец получить его декодирование и получить объект.PHP wont JSON кодирует несколько массивов() с тем же именем

Это позволит мне иметь несколько объектов с именем message и прокручивать их и обрабатывать каждое сообщение отдельно.

Однако при кодировании php будет кодировать только key и один из массивов message - последний.

$setup = [ 
    'key' => 'demo-7hn3fh83un3yhvfjvnjgknfhjnvf', 

    'message' => [ 
     'number' => [ 
      '+39XXXXXXXX', 
      '+34XXXXXXXX', 
      '+49XXXXXXXX' 
     ], 

     'text' => 'Sample msg 123...', 
    ], 

    'message' => [ 
     'number' => [ 
      '+50XXXXXXXX', 
      '+50XXXXXXXX' 
     ], 

     'text' => 'Something...', 
    ] 
]; 

Есть ли способ кодирования нескольких массивов с таким же именем?

+3

Нет. Даже если вы выгрузили эту структуру в PHP 'print_r ($ setup)', вы обнаружите, что у нее есть только один поддиапазон 'message'. Если есть несколько сообщений, вам нужно сделать 'message' сам массив подструктур. Является ли это структурой, которую вы можете изменить или вы уже привязаны к ней (несмотря на ее не-функциональность)? –

+0

FYI: У вас не может быть * дублирующих * ключей в массиве: https://eval.in/695793 –

+0

@MichaelBerkowski Не привязан к нему. Отправил реконфигурированную структуру в качестве ответа. – Borsn

ответ

2

Спасибо за советы всем. Я закончил тем, что модифицировал структуру, как показано ниже ...

Причина, по которой я собираюсь со структурой, подобной этой, заключается в том, что она позволяет отправлять несколько сообщений нескольким пользователям с помощью одного запроса.

$setup = [ 
    'key' => 'demo-7hn3fh83un3yhvfjvnjgknfhjnvf', 

    'message' => [ 
     [ 
      'number' => [ 
       '+39XXXXXXXX', 
       '+34XXXXXXXX', 
       '+49XXXXXXXX' 
      ], 

      'text' => 'Sample msg 123...' 
     ], 
     [ 
      'number' => [ 
       '+50XXXXXXXX', 
       '+50XXXXXXXX' 
      ], 

      'text' => 'Something...' 
     ] 
    ] 
]; 
3

вы упускать из виду вопрос корня:

$foo = [ 
    'bar' => 1, 
    'bar' => 2, 
    'bar' => 3, 
]; 
var_export($foo); 
array (
    'bar' => 3, 
) 
+0

Точно, проблема не имеет ничего общего с 'json_encode', массивы PHP не позволяют использовать два элемента с одним и тем же ключом, как и большинство массивов/объектов/карт, с которыми я когда-либо работал. –

+2

... включая сам JSON, конечно :) –

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