Как перебрать массив из JSON Объектов? php, laravel

132
12 февраля 2022, 15:40

Опишу подробнее - делаю галерею с загрузкой нескольких изображений на Laravel - у меня в таблице с товарами есть поле - file, в котором я записываю данные через JSON_encode и получаю такие значения в базе данных -

{"path":"sUH7TXv7.jpg"},{"path":"JBGeOqCn.jpg"},{"path":"NWNLQUh5.jpg"}

Как я могу перебрать эти значения, чтобы можно было потом перевести его в массив и вывести каждое значение по очереди, для отображения картинок?

Answer 1

Конкретно к вашему примеру:

$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
        )
)
Answer 2

Как вариант, добавить в строку [], сделав это валидным JSON'ом с массивом объектов

$source = '{"path":"sUH7TXv7.jpg"},{"path":"JBGeOqCn.jpg"}'
$json = json_decode('[' . $source . ']');
foreach($json as $img) {
  echo $img->path;
}
Answer 3

Используйте 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;  // ссылка на картинку
   }
READ ALSO
Не могу настроить php окружение

Не могу настроить php окружение

Ребят, я сразу признаюсь я чайник, я верстальщик, хочу разобраться как мне сделать загрузку php файлов локально, я делаю корпоративный сайт,...

152
symfony или slim framework

symfony или slim framework

На php разрабатываю более 7 летГотовые фреймворки никогда не использовал, за исключением отдельных компонентов (или библиотек monolog, guzzlehttp и т

123
PHP CLI на Windows 10 не срабатывает max_execution_time

PHP CLI на Windows 10 не срабатывает max_execution_time

Столкнулся с проблемой: на Windows 10, не срабатывает max_execution_time для PHP CLI (любых версий, но на данный момент работаю с 56)

80
Какую версию laravel использовать для работы?

Какую версию laravel использовать для работы?

заметил что уже есть laravel v6 , однако большинства проектов написаны и тем более пишут на 5

108