0

我希望能够在 php 文件中使用从 POST 接收的 JSON 对象。JSON 看起来像这样:

array(1) {
  ["json"]=>
  string(260) "[{"proddescr":"text1","prodpu":"1","prodcant":"1","prodnume":"text1x"},  {"proddescr":"text2","prodpu":"2","prodcant":"2","prodnume":"text2x"}, {"proddescr":"text3","prodpu":"Price:150.00","prodcant":"quantity:4","prodnume":"text3x"}]"
}

我在 php 文件中这样访问它:

<?php 
 header('Content-type: application.json');
 $x = json_decode($_POST['json']);
 foreach($x as $i => $value){
   print_r($x[$i]);
 }
?>

现在......来自桌面编程......我不太了解json处理,但我需要能够访问JSON数组的所有元素(上面看到3个)及其所有内容。我似乎能够使用 foreach 访问主要元素,但我似乎无法成功访问每个“记录”的内部元素

但结果看起来就像这样:

stdClass Object
(
    [proddescr] => text1
    [prodpu] => 1
    [prodcant] => 1
    [prodnume] => text1x
)
stdClass Object
(
    [proddescr] => text2
    [prodpu] => 2
    [prodcant] => 2
    [prodnume] => text2x
)
and so on

目的是能够根据 json 数组中的值组成一个 INSERT 语句。

所以我需要能够(在 foreach 循环内)从这 3 个(在这种情况下)数组项中的每一个中获取“proddescr”值、“prodpu”值、“prodcant”值和“prodnume”值。

我试过

   print_r($x[$i][0]);

   print_r($x[$i]["proddesc"]);

为了能够访问数组的内部值但不起作用(当我添加上述两个 print_r.

如何访问我的数组的这些子值?

4

3 回答 3

2

true用作第二个参数将json_decode其转换为数组

$x = json_decode($_POST['json'],true);
foreach($x as $i => $value){
    echo $x[$i]['proddescr'];
    echo $x[$i]['prodpu'];
    echo $x[$i]['prodcant'];
    echo $x[$i]['prodnume'];
}

键盘演示

于 2013-07-11T13:36:05.890 回答
2

这里有几个问题,首先您使用 foreach 块,但访问数组时就像使用 for 循环一样。您不需要在此处设置标头,因为您没有输出任何 json。

$x = json_decode($_POST['json']);
 foreach($x as $i => $value){
     echo $value->proddescr; //you can access the other objects the same way.
 }

您也可以使用其他方法访问它。但根据您的迭代设置,此方法提供最干净的访问。

于 2013-07-11T13:38:49.077 回答
0

我会说 $x[$i]->proddescr 等

于 2013-07-11T13:39:37.417 回答