0

我正在将页面中的数字列表传递给以 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] )

但是当我试穿foreacharr["items"]打印出每个值时,我得到的只是一个值

[1,2,4]

这是我用来迭代的代码

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

为什么我没有得到类似的东西

1
2
4
4

2 回答 2

5

仔细查看您的 json 字符串:

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

仔细看:

“[1,2,3,4]”

您是说 items 是一个字符串,其中包含:

“[1,2,3,4]”

删除“,你会没事的。

于 2012-11-27T22:01:45.963 回答
2

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

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

为了摆脱类似JSON.stringify在 JS 中使用的问题:

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

对于 IE < 8,它必须包含在外部脚本中(请参见此处):

<!--[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))
于 2012-11-27T22:05:41.757 回答