我有这个JSON,我正在解析。我可以在PHP中按顺序检索field_data的所有值,但是我需要通过指定字段名来遍历并获取我想要的值,而不用考虑顺序:
JSON
{
created_time: "2018-05-14T16:11:02+0000",
id: "555555555555",
field_data: [
{
name: "bedrooms_interested_in?",
values: [
"2"
]
},
{
name: "When_are_you_looking?",
values: [
"January 1s 2019"
]
},
{
name: "email",
values: [
"xxxx@domain.com"
]
},
{
name: "full_name",
values: [
"John Michael"
]
},
{
name: "phone_number",
values: [
"+15555555555"
]
}
]
}
PHP
这是抓住最后3个领域。我现在能够像这样按顺序提取fields_data
,但是如何通过指定我要查找的名称字段来获取我想要的值字段?
$data = json_decode($response, true);
// var_dump($data);
file_put_contents('dump.txt', $response);
$lead_email = $data['field_data'][2]['values'][0];
$lead_fullname = $data['field_data'][3]['values'][0];
$lead_phone = $data['field_data'][4]['values'][0];
答案 0 :(得分:3)
您可以使用array_column
按给定列重新索引数组,这样可以更轻松,更可靠地访问数据:
$data['field_data'] = array_column($data['field_data'], null, 'name');
这允许您按名称而不是数字索引访问字段,例如
echo $data['field_data']['email']['values'][0];
// xxxx@domain.com
有关完整示例,请参阅https://eval.in/1003874
(注意,我在JSON属性名称中添加了一些引号,因为它们在问题中缺失。我认为这是一个格式化问题,因为这根本不起作用)