JSON字符串到PHP数组问题

时间:2014-11-20 09:55:27

标签: php arrays json

我正在尝试将以下输出解码为PHP数组,但我遇到了一些问题。谷歌没有太多帮助。

我从现有应用程序收到字符串JSON:

[{"1":{"product":"ABC47","quantity":"2"},"2":{"product":"ABC30","quantity":"2"}}]

我试过的是:

$arr = json_decode($json,true);

foreach ($arr as $key => $value){
echo " Key: $key; Value $value<br />\n" ;
}

问题是它正在添加奇怪的对象,如var_dump:

所示
array(1) { 
    [0]=> array(2) { 
    [1]=> array(2) { ["product"]=> string(5) "ABC47" ["quantity"]=> string(1) "2" }
    [2]=> array(2) { ["product"]=> string(5) "ABC30" ["quantity"]=> string(1) "2" } 
    }
  }

跟随我的foreach上的错误消息:

Notice: Array to string conversion in pm.php on line 20

我正在努力实现的是将产品价值和数量值相匹配,因此循环PHP数组给我一个整洁的列表,如

ABC47 2

ABC30 2

我可以放入表格,数据库等。所以我需要一种方法,只将产品和数量传递到一个新的数组,并整齐地将它呈现给前端和/或另一个代码块数据库处理。我无法弄清楚这个嵌套数组的事情。

谢谢。

3 个答案:

答案 0 :(得分:1)

$jsonString = '[{"1":{"product":"ABC47","quantity":"2"},"2":{"product":"ABC30","quantity":"2"}}]';

$json = json_decode($jsonString, true);

foreach($json[0] as $key => $productArray) {
    echo $productArray['product'] . ' - ' . $productArray['quantity'] . PHP_EOL;
}

答案 1 :(得分:1)

你的foreach循环中的

$value指的是一个数组,你不能echo

据我所知,这就是你要找的东西:

$arr = json_decode($json, true)[0];
foreach ($arr as $key => $value){
    echo " Key: $value[product]; Value: $value[quantity]<br />\n" ;
}

Demo

答案 2 :(得分:0)

您似乎不了解嵌套级别。

试试这个:

$arr = json_decode($json,true);
foreach ($arr as $list) {
    foreach ($list as $item) {
        echo $item['product'];
    }
}