Из json в массив

Как можно привести json вида {"id":[1,3,11,27]} к массиву. Я получаю из бд данные с json, а затем нужно составить запрос подставляя в него id, котороые указаны через запятую.

Например:

$array = json_decode($json, true);

foreach ($array as $id) {
  $teacher = DB::table('teacher')
  ->where('teacher.id', '=', $id)->get();
}


Ответы (1 шт):

Автор решения: Eugene X

Как? Ознакомиться с документацией например.

<?php
$json_string = '{"id":[1,3,11,27]}';
$json = json_decode($json_string);
print_r($json);

foreach ($json->id as $id) {
    var_dump($id);
}

Вывод

stdClass Object
(
    [id] => Array
        (
            [0] => 1
            [1] => 3
            [2] => 11
            [3] => 27
        )

)
int(1)
int(3)
int(11)
int(27)
  1. Во первых json_decode возвращает объект, если вторым параметром не указан true
  2. У тебя в JSON явно указан ключ "id" равен массиву, а не просто [1,3,11,27]
  3. Зачем ты делаешь много запросов, когда можно использовать WHERE `teacher.id` IN (1,3,11,27) ORDER BY `teacher.id` и потом просто отсортировать полученные данные. Представь себе что id вернёт 1000 id'шек, ты будешь делать 1000 запросов и застрелишь SQL ?
→ Ссылка