我正在尝试将以下输出解码为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
我可以放入表格,数据库等。所以我需要一种方法,只将产品和数量传递到一个新的数组,并整齐地将它呈现给前端和/或另一个代码块数据库处理。我无法弄清楚这个嵌套数组的事情。
谢谢。
答案 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)
$value
指的是一个数组,你不能echo
。
据我所知,这就是你要找的东西:
$arr = json_decode($json, true)[0];
foreach ($arr as $key => $value){
echo " Key: $value[product]; Value: $value[quantity]<br />\n" ;
}
答案 2 :(得分:0)
您似乎不了解嵌套级别。
试试这个:
$arr = json_decode($json,true);
foreach ($arr as $list) {
foreach ($list as $item) {
echo $item['product'];
}
}