PHP:如何将POST中的JSON字符串转为指定数组并解决报错?
问题解决方法
首先说报错原因:你用json_decode()默认返回的是stdClass对象,不是数组,而foreach需要遍历数组或可遍历对象,所以才会抛出类型错误。另外你的代码里json_encode($d)再解码的操作完全是冗余的,没必要这么做。
针对你的需求,正确的处理步骤如下:
- 解码POST里的JSON字符串时,给
json_decode()传第二个参数true,让它返回关联数组:
// 解码为数组,而非对象 $data = json_decode(stripslashes($_POST['data']), true);
- 你的原始JSON是一个二维数组(最外层是数组,里面包含一个子数组),所以直接取
$data[0]就是你要的目标数组:
$targetArr = $data[0]; // 输出验证 echo $targetArr[0] . ',' . $targetArr[1] . ',' . $targetArr[2];
如果一定要用foreach遍历外层数组(虽然这里外层只有一个元素),也可以这么写:
$data = json_decode(stripslashes($_POST['data']), true); foreach ($data as $d) { // $d就是目标数组,直接访问即可 echo $d[0] . ',' . $d[1] . ',' . $d[2]; }
这样就能得到你想要的结果:
$targetArr[0] = "2022-11-22"$targetArr[1] = "fasfasf"$targetArr[2] = "[[\"1,2\"],[\"3,4\"],[\"5\"]]"
内容的提问来源于stack exchange,提问作者user20574283
相关产品推荐
相关产品推荐

