具有多个相同键的Json数组

时间:2018-03-15 22:21:50

标签: php

我有这个带有2个元素的简单数组,它们被转换成json格式:

echo '['.json_encode(array("name" => "FRENCH POLYNESIA", "name" => "POLAND")).']';

结果是:[{"name":"POLAND"}]

在我的情况下,我需要这个结果:[{"name": "FRENCH POLYNESIA"},{"name": "POLAND"}]我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

这个JSON:

[{"name": "FRENCH POLYNESIA"},{"name": "POLAND"}]

是一个包含两个对象的数组。因此,您需要输入数组包含两个数组而不是两个键值对。

array(array("name" => "FRENCH POLYNESIA"), array("name" => "POLAND"))

json_encode会将内部数组转换为对象。

评论中已经提到过,但是你的原始数组格式没有意义,因为你不能拥有两个相同的数组键。

答案 1 :(得分:0)

您不能在同一个数组中创建两个(或更多)相同的键,最后一个值将覆盖之前的值。

此值:

[{"name": "FRENCH POLYNESIA"},{"name": "POLAND"}]

解码为

array (size=2)
  0 => 
    array (size=1)
      'name' => string 'FRENCH POLYNESIA' (length=16)
  1 => 
    array (size=1)
      'name' => string 'POLAND' (length=6)

所以要回答你的问题,你的数组应该是这样的

$array = [
    array(
       'name' => 'FRENCH POLYNESIA'
    ),
    array(
       'name' => 'POLAND'
    ),
];