Из 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
→ Ссылка
Как? Ознакомиться с документацией например.
- https://www.php.net/manual/ru/function.json-decode.php
- https://www.php.net/manual/ru/language.types.object.php
<?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)
- Во первых json_decode возвращает объект, если вторым параметром не указан true
- У тебя в JSON явно указан ключ
"id"равен массиву, а не просто[1,3,11,27] - Зачем ты делаешь много запросов, когда можно использовать
WHERE `teacher.id` IN (1,3,11,27) ORDER BY `teacher.id`и потом просто отсортировать полученные данные. Представь себе что id вернёт 1000 id'шек, ты будешь делать 1000 запросов и застрелишь SQL ?