我正在创建一个将json数据返回到javascript文件的php文件。目前它只返回最后一个json对象并忽略其余的json对象。这是我的PHP代码
$arr = array(
"cartId" => 456186,
"lastModified" => "Tue, 19 Jan 2010 03:14:07 GMT",
"items" => array(
15642,
45616,
54984,
45751
),
"cartId" => 456187,
"lastModified" => "Tue, 20 Jan 2010 04:14:07 GMT",
"items" => array(
'item' => 15643,
'item' => 45617,
'item' => 54985,
'item' => 45752
)
);
echo json_encode($arr);
以上代码返回
{"cartId":456187,"lastModified":"Tue, 20 Jan 2010 04:14:07 GMT","items":{"item":45752}}
如何解决此问题?
答案 0 :(得分:8)
这应该有效:
$arr = array(
array(
"cartId" => 456186,
"lastModified" => "Tue, 19 Jan 2010 03:14:07 GMT",
"items" => array(
15642,
45616,
54984,
45751
)
),
array(
"cartId" => 456187,
"lastModified" => "Tue, 20 Jan 2010 04:14:07 GMT",
"items" => array(
15643,
45617,
54985,
45752
)
)
);
echo json_encode($arr);
您的错误的原因是因为您不能在PHP数组(或JSON对象)中有重复的键。后面的键覆盖了前者,并创建了一个较小版本的数组。
在这里,我们将项目分组为子数组。
答案 1 :(得分:3)
第一个元素被第二个元素覆盖,因为它们的键是相同的。与第二项中的items
数组相同。
尝试
$arr = array (
array(
"cartId" => 456186,
"lastModified" => "Tue, 19 Jan 2010 03:14:07 GMT",
"items" => array(
15642,
45616,
54984,
45751,
),
),
array(
"cartId" => 456187,
"lastModified" => "Tue, 20 Jan 2010 04:14:07 GMT",
"items" => array(
15643,
45617,
54985,
45752,
),
),
);
答案 2 :(得分:0)
你不能给出相同的索引
$arr = array(
"cartId1" => 456186,
"lastModified1" => "Tue, 19 Jan 2010 03:14:07 GMT",
"items1" => array(
15642,
45616,
54984,
45751
),
"cartId2" => 456187,
"lastModified2" => "Tue, 20 Jan 2010 04:14:07 GMT",
"items2" => array(
'items1' => 15643,
'items2' => 45617,
'items3' => 54985,
'items4' => 45752
)
);
echo json_encode($arr);
答案 3 :(得分:0)
以下是您基本需要做的事情:
$arr = array(
array(
"cartId" => 456186,
"lastModified" => "Tue, 19 Jan 2010 03:14:07 GMT",
"items" => array(
15642,
45616,
54984,
45751
),
),
array(
"cartId" => 456187,
"lastModified" => "Tue, 20 Jan 2010 04:14:07 GMT",
"items" => array(
'item' => 15643,
'item' => 45617,
'item' => 54985,
'item' => 45752
)
)
);
因此,您可以看到我们必须将嵌套元素的集合包装在数组的内部。
答案 4 :(得分:0)
您没有正确设置多维数组。
为此,您需要使用array()
来设置嵌套/内部数组。
$arr = array(array("key"=>"value"), array("key"=>"value"));
而不是你现在正在做的事情:
$arr = array(("key"=>"value"), ("key"=>"value"));