Опишу подробнее - делаю галерею с загрузкой нескольких изображений на Laravel - у меня в таблице с товарами есть поле - file, в котором я записываю данные через JSON_encode и получаю такие значения в базе данных -
{"path":"sUH7TXv7.jpg"},{"path":"JBGeOqCn.jpg"},{"path":"NWNLQUh5.jpg"}
Как я могу перебрать эти значения, чтобы можно было потом перевести его в массив и вывести каждое значение по очереди, для отображения картинок?
Конкретно к вашему примеру:
$a = '{"path":"sUH7TXv7.jpg"},{"path":"JBGeOqCn.jpg"},{"path":"NWNLQUh5.jpg"}';
$b = explode(',', $a);
$c = array_map('json_decode',$b);
print_r($c);
Вывод:
Array
(
[0] => stdClass Object
(
[path] => sUH7TXv7.jpg
)
[1] => stdClass Object
(
[path] => JBGeOqCn.jpg
)
[2] => stdClass Object
(
[path] => NWNLQUh5.jpg
)
)
Как вариант, добавить в строку [], сделав это валидным JSON'ом с массивом объектов
$source = '{"path":"sUH7TXv7.jpg"},{"path":"JBGeOqCn.jpg"}'
$json = json_decode('[' . $source . ']');
foreach($json as $img) {
echo $img->path;
}
Используйте json_decode со вторым параметром, который делаейт из объекта массив. Объект лучше привести к такому виду
{"path":"sUH7TXv7.jpg","path":"JBGeOqCn.jpg","path":"NWNLQUh5.jpg"}
$source = '{"path":"sUH7TXv7.jpg","path":"JBGeOqCn.jpg","path":"NWNLQUh5.jpg"}';
$json = json_decode($source, true);
foreach($json as $img) {
echo $img; // ссылка на картинку
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей