首页 > 解决方案 > PHP循环遍历数据库中的JSON数组

问题描述

我将这个 JSON 数组存储在我的数据库中

[{
    "prodid": 1,
    "optionsids": [],
    "extrasids": ["1"]
}, {
    "prodid": 2,
    "optionsids": [],
    "extrasids": ["4"]
}]

我将它存储为一个数组,当我在 PHP 中检索它时,我正在经历这个,我 100% 确定它是错误的

 $productsarray=json_encode($row['productids']);
 $obj = json_decode($productsarray, TRUE);

所以我可以循环获取prodid

$products='';
foreach( $obj as $key => $value) {
    $value = get_object_vars($value);
    $products = $products.$value;
}

但我收到一个Invalid argument supplied for foreach()错误,这意味着这$obj不是一个数组,对吗?idk 如何解决这个问题我尝试了各种方法但没有结果。

标签: phpjson

解决方案


如果这是string存储在您的数据库列中:

[{
    "prodid": 1,
    "optionsids": [],
    "extrasids": ["1"]
}, {
    "prodid": 2,
    "optionsids": [],
    "extrasids": ["4"]
}]

如果它已经存储为 json,json_encode当你将它从数据库中拉出时,你不需要再次存储它。

以下是您需要做的所有事情才能将所有内容prodid放入一个数组中以供使用:

$items = json_decode($row['productids'],true);
$products = [];
foreach($items as $item) {
    $products[] = $item['prodid'];
}
var_dump($products);// for debug to see the result

$product_string = implode(',',$products);// to put all prodid in a single string

推荐阅读