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