解析JSON而不依赖于订单

时间:2018-05-14 16:24:28

标签: php json

我有这个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];

1 个答案:

答案 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属性名称中添加了一些引号,因为它们在问题中缺失。我认为这是一个格式化问题,因为这根本不起作用)