#php #json #laravel
#php #json #laravel
Вопрос:
В моем одном проекте мне потребовалось извлечь каждое 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"
}
]
Я знаю одно решение для извлечения каждого телефона из входного json contact
foreach($contacts as $phone){
$phones[]=$phone->phone;
}
Есть ли какой-либо альтернативный способ в php / laravel получить все значения из входного json для определенного ключа?
Комментарии:
1. вы не используете json_decode()?
2. array_column может быть тем, что вам нужно. У вас должен быть PHP 5.5 или более поздний.
3. @devpro он должен быть, иначе foreach не будет работать
4. Смотрите Руководство для
array_column()
его большого небольшого ресурса для программистов, руководство, которое5. @Chintan7027: Hii ..здесь я предоставляю ссылку [ jonsuh.com/blog /… это полезно во многих вещах, а также полезно для этого вопроса. Я знаю, что приведенный ниже ответ уже решил вашу проблему. Пожалуйста, просмотрите его, может быть полезно.:)
Ответ №1:
Это должно вернуть то, что вы ищете, при условии, что у вас есть PHP 5.5 или более поздняя версия. Не уверен, нужно ли устанавливать второму параметру json_decode значение TRUE, которое возвращает массив массивов, а не массив объектов.
$x = json_decode(yourjson, TRUE);
$phones = array_column($x, 'phone');
Ответ №2:
Поскольку у вас уже есть это как массив, вы можете использовать array_map
$phones = array_map(function($contact) { return $contact->phone; }, $contacts);
Ответ №3:
Вы можете использовать вспомогательные функции Laravel:
$phones = array_pluck($contacts, 'phone');
или коллекция:
$contacts = collect($contacts);
$phones = $contacts->pluck('phone');
и не забудьте проанализировать JSON как массив:
$contacts = json_decode($json, true);