使用php从json中的嵌套数组获取数据

使用php从json中的嵌套数组获取数据,php,json,loops,Php,Json,Loops,我的json来自url提要。下面是一个示例。我没有正确地执行foreach循环是问题所在 { "useLive": true, "models": [ { "snapshotUrl": "https://img-eu.whatevercdn.com/eu7/previews/1537971705/5293074", "widgetPreviewUrl": "https://img-eu.whatevercdn.com

我的json来自url提要。下面是一个示例。我没有正确地执行foreach循环是问题所在

{
    "useLive": true,
    "models": [
        {
            "snapshotUrl": "https://img-eu.whatevercdn.com/eu7/previews/1537971705/5293074",
            "widgetPreviewUrl": "https://img-eu.whatevercdn.com/eu7/previews/1537971705/5293074",
            "id": 5293074,
            "country": "",
            "gender": "female",
            "isNew": false,
            "previewUrl": "https://st.whatevercdn.com/cdn/previews/b/a/a/baa515a42e75d80b0dc1e7a75bf4ea0f-full",
            "previewUrlThumbBig": "https://st.whatevercdn.com/cdn/previews/b/a/a/baa515a42e75d80b0dc1e7a75bf4ea0f-thumb-big",
            "previewUrlThumbSmall": "https://st.whatevercdn.com/cdn/previews/b/a/a/baa515a42e75d80b0dc1e7a75bf4ea0f-thumb-small",
            "broadcastGender": "female",
            "snapshotServer": "eu7",
            "tags": ["autoTagPopular","keyword","keyword2"],
            "topBestPlace": 0,
            "username": "model1",
            "languages": ["en"],
            "stripScore": 998.5,
            "token": "93021860dbebd5ba27e604f6b4b93754"
        },
        {
            "snapshotUrl": "https://img-eu.whatevercdn.com/eu8/previews/1537971700/6492104",
            "widgetPreviewUrl": "https://img-eu.whatevercdn.com/eu8/previews/1537971700/6492104",
            "id": 6492104,
            "country": "",
            "gender": "female",
            "isNew": false,
            "previewUrl": "https://st.whatevercdn.com/cdn/previews/2/b/3/2b366955f5a66d73ee038d43bf77c99b-full",
            "previewUrlThumbBig": "https://st.whatevercdn.com/cdn/previews/2/b/3/2b366955f5a66d73ee038d43bf77c99b-thumb-big",
            "previewUrlThumbSmall": "https://st.whatevercdn.com/cdn/previews/2/b/3/2b366955f5a66d73ee038d43bf77c99b-thumb-small",
            "broadcastGender": "female",
            "snapshotServer": "eu8",
            "tags": ["autoTagPopular","keyword","keyword2"],
            "topBestPlace": 0,
            "username": "model2",
            "languages": [],
            "stripScore": 997.25,
            "token": "2c6ee95270f6faf76cd33321732136e3"
        }
    ],
    "ttl": 15,
    "tagType": "F+T",
    "tagName": "Featured",
    "defaultTags": [
        {
            "name": "whatever1",
            "url": "/tags/whatever1"
        },
        {
            "name": "whatever2",
            "url": "/tags/whatever2"
        },
        {
            "name": "whatever3",
            "url": "/tags/whatever3"
        }
    ],
    "serverTime": "2018-09-26T14:23:00Z"
}
这是我到目前为止的php代码。我试过很多不同的方法。我通常使用xml提要,这似乎很容易为我需要的内容进行设置。我不确定我错过了什么

$url='1!'https://whatever.com/api/external/v4/widget?userId=whatever&tag=featured'; // JSON文件的路径
$data=file_get_contents($url);//将文件内容放入变量中
$performers=json_decode($data,true);//解码JSON提要
foreach($performers作为$performer){
$info=$performer[0][“用户名”];
echo$info;
}
我只得到第一个用户名,然后是错误消息

警告:在/whatever中非法的字符串偏移量“username”


有人能帮上忙吗?

您应该在foreach中使用$performers['models']数组,然后获取用户名。它可以正常工作。请尝试以下代码

$performers = json_decode($data, true); 
if(isset($performers['models'])){   
    foreach ($performers['models'] as $performer) {
        $info = (isset($performer["username"])) ? $performer["username"] : '';
        echo $info;
        echo "<br>";
    }   
}

如果用户名存在且不为空,还应检查用户名
model1
model2