在我的一个项目中,我需要从输入json中提取每个phone
。 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中获取特定键的所有值?
答案 0 :(得分:1)
由于您已将此作为数组使用,因此可以使用array_map
$phones = array_map(function($contact) { return $contact->phone; }, $contacts);
答案 1 :(得分:1)
如果您有最近的PHP 5.5或更高版本,这应该返回您正在寻找的内容。不确定是否有必要将json_decode的第二个参数设置为TRUE,这将返回一个数组数组,而不是对象数组。
$x = json_decode(yourjson, TRUE);
$phones = array_column($x, 'phone');
答案 2 :(得分:1)
您可以使用Laravel辅助函数:
$phones = array_pluck($contacts, 'phone');
或收藏品:
$contacts = collect($contacts);
$phones = $contacts->pluck('phone');
并且不要忘记将JSON解析为数组:
$contacts = json_decode($json, true);