#php #json
#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 как это исправить я пробовал разные вещи, но безрезультатно.
Комментарии:
1. Если он уже сохранен в формате json, вам не нужно
json_encode
использовать его снова, когда вы извлекаете его из базы данных. Также при использованииtrue
вjson_decode
весь$obj
массив будет ассоциативным, поэтому последующееget_object_vars
может быть непредсказуемым с введенным в него ассоциативным массивом.2. Пожалуйста, предоставьте желаемый результат
Ответ №1:
Если это 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