将JSON列表转换为php数组

时间:2012-11-27 21:57:44

标签: php json

我将页面中的数字列表传递给在JSON中序列化的PHP

{"items":"[1,2,3,4]"}

在我的网址中只是

...&items={"items":[1,2,3,4]}

我在PHP中解码了这个

$json = $_GET["items"];
$arr = json_decode($json, true);

我得到一个数组

Array ( [items] => [1,2,4] )

但是当我在foreach上尝试arr["items"]并打印出每个值时,我得到的只是一个值

[1,2,4]

这是我用来迭代的代码

foreach($res["items"] as $value)
    echo $value; 

为什么我没有得到像

这样的东西
1
2
4

2 个答案:

答案 0 :(得分:5)

仔细查看你的json字符串:

{"items":"[1,2,3,4]"}

仔细观察:

“[1,2,3,4]”

您说这些项目是包含以下内容的字符串:

“[1,2,3,4]”

删除“你会没事的。

答案 1 :(得分:2)

您的序列化错误。应该是:

{"items":[1,2,3]}

要摆脱JS中使用JSON.stringify的问题:

var myData = {"items" : [1,2,3]},
    queryString = 'data='+encodeURIComponent(JSON.stringify(myData));

用于IE< 8它必须包含在外部脚本中(参见here):

<!--[if lt IE 8]><script src="/js/json2.js"></script><![endif]-->

无论如何更容易将它作为数组发送:

items[0]=1&items[1]=2&items[2]=3

这样你就可以发送更复杂的结构:

data[items][0]=1&data[items][1]=2
// on PHP side will become
$_GET['data'] = array('items' => array(1,2))