В моем одном проекте я должен был извлечь каждый phone
из ввода json. Json вводит что-то вроде:
[ { "name": "Niyo", "email": "niyo@ymail.com", "phone": "8989457845" }, { "name": "Picks", "email": "picks.p@gmail.com", "phone": "7878121245" }, { "name": "Chintz", "email": "Chintz@gmail.com", "phone": "8745421254" }, { "name": "Kabiru Wabyu", "email": "kabiru.v@gmail.com", "phone": "" }, { "name": "Rons", "email": "", "phone": "9898989898" } ]
Я знаю одно решение для извлечения каждого телефона из входного contact
json
foreach($contacts as $phone){ $phones[]=$phone->phone; }
Есть ли альтернативный способ в php / laravel для получения всех значений из ввода json для определенного ключа?
Это должно вернуть то, что вы ищете, при условии, что у вас есть php 5.5 или более поздней версии. Не уверен, что необходимо установить второй параметр json_decode в TRUE, который возвращает массив массивов, а не массив объектов.
$x = json_decode(yourjson, TRUE); $phones = array_column($x, 'phone');
Поскольку у вас уже есть это как массив, вы можете использовать array_map
$phones = array_map(function($contact) { return $contact->phone; }, $contacts);
Вы можете использовать вспомогательные функции Laravel:
$phones = array_pluck($contacts, 'phone');
или сборник:
$contacts = collect($contacts); $phones = $contacts->pluck('phone');
и не забудьте проанализировать JSON как массив:
$contacts = json_decode($json, true);