Получать значения из каждого json-объекта определенного ключа

В моем одном проекте я должен был извлечь каждый 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 для определенного ключа?

Related of "Получать значения из каждого 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);