我有这个带有2个元素的简单数组,它们被转换成json格式:
echo '['.json_encode(array("name" => "FRENCH POLYNESIA", "name" => "POLAND")).']';
结果是:[{"name":"POLAND"}]
在我的情况下,我需要这个结果:[{"name": "FRENCH POLYNESIA"},{"name": "POLAND"}]
我怎么能这样做?
答案 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'
),
];