php - 到达空的JSON数组

时间:2017-02-02 14:21:14

标签: php json microsoft-cognitive

我使用Microsoft Face API并且我想向最终用户显示数据,但是如何使用foreach来表示faceAttributes-> age? 有一个JSON文件的例子

[
    {
        "faceId": "c5c24a82-6845-4031-9d5d-978df9175426",
        "faceRectangle": {
            "width": 78,
            "height": 78,
            "left": 394,
            "top": 54
        },
        "faceAttributes": {
            "age": 71.0,
            "gender": "male",
            "smile": 0.88,
            "facialHair": {
                "mustache": 0.8,
                "beard": 0.1,
                "sideburns": 0.02
                }
            },
            "glasses": "sunglasses",
            "headPose": {
                "roll": 2.1,
                "yaw": 3,
                "pitch": 0
            }
        }
    }
]

我尝试了这段代码但没有工作:

<?php

    $json = file_get_contents('file.json');
    $data =  json_decode($json);
    if (count($data->faceAttributes)) {
        // Cycle through the array
        foreach ($data->faceAttributes as $idx => $faceAttributes) {
            // Output a row
    echo $faceAttributes->age ;
    echo $faceAttributes->gender ;

?>

谢谢!

1 个答案:

答案 0 :(得分:0)

You don't have to iterate the object using foreach as the 'age' is a property of $data->faceAttributes itself.

Use this instead

if (count($data->faceAttributes)) {    
    echo $data->faceAttributes->age;
    echo $data->faceAttributes->gender;
}

However, $data is an array and which $data you are using is actually $data[0]

So, if there is only one element in data array you can do

$data = $data[0] or $data = json_decode($json)[0]

Or, you can iterate through $data in case of more then one element.