Php 如何在Json中搜索并获取子数据

Php 如何在Json中搜索并获取子数据,php,json,Php,Json,我有一个包含所有描述的用户的json文件,使用数据[2]很难找到它们。想象一下,在data[0]->users->data中,我有3个用户,我想找到name=“statfin”来获取description->data->instagram并获取值。我将为您提供一个简单的json数据 {“数据”:[ { “id”:1, “类别名称”:“作者”, “用户”:{ “数据”:[{ “姓名”:“史蒂夫”, “id”:“1”, “说明”:{ “数据”:[ { “instagram”:“steveid” }

我有一个包含所有描述的用户的json文件,使用
数据[2]
很难找到它们。想象一下,在
data[0]->users->data
中,我有3个用户,我想找到
name=“statfin”
来获取
description->data->instagram
并获取值。我将为您提供一个简单的json数据

{“数据”:[
{
“id”:1,
“类别名称”:“作者”,
“用户”:{
“数据”:[{
“姓名”:“史蒂夫”,
“id”:“1”,
“说明”:{
“数据”:[
{
“instagram”:“steveid”
}
]
}
},{
“名称”:“Stafin”,
“id”:“2”,
“说明”:{
“数据”:[
{
“instagram”:“stafinid”
}
]
}
},{
“姓名”:“莎拉”,
“id”:“3”,
“说明”:{
“数据”:[
{
“instagram”:“saraid”
}
]
}
}]
}
}
]}
代码:


注意:用php语言回答
对不起,我的英语不好。如果您没有得到,请告诉我详细描述您的函数搜索
id
,但您说您要搜索
name
。您可以使键成为函数的另一个参数。然后,您可以使用它在
data
数组中查找
id
,在
users['data']
数组中查找
name

function searchArray($searchkey, $searchval, $array) {
   foreach ($array as $key => $val) {
       if ($val[$searchkey] === $searchval) {
           return $val;
       }
   }
   return null;
}

foreach ($json['data'] as $data) {
    $user = searchArray('name', 'Stafin', $data['users']['data']);
    if ($user) {
        echo "Found Stafin";
        foreach ($user['description']['data'] as $desc) {
            if (isset($desc['instagram'])) {
                echo ", Instagram is {$desc['instagram']}";
                break;
            }
        }
        break;
    }
}

使用
foreach
循环。我不知道如何正确使用,我正在学习javascript,完成后,我将启动php。你能帮我一下吗?/看,这是我的名片。但是它不太好
test.json是我在最上面的问题tnx中遇到的,但我认为您遗漏了一些东西:
解析错误:语法错误,意外的“}”,期望的是“;”在第18行的C:\xampp\htdocs\json\index.php中,我忘记了
警告:为第12行的C:\xampp\htdocs\json\index.php中的foreach()提供的参数无效
数据中没有id 2。我把它改成了id 1。请测试一下你的代码<代码>注意:未定义的索引:第13行C:\xampp\htdocs\json\index.php中的名称
。这是第13行:
if($val[$searchkey]==$searchval){
function searchArray($searchkey, $searchval, $array) {
   foreach ($array as $key => $val) {
       if ($val[$searchkey] === $searchval) {
           return $val;
       }
   }
   return null;
}

foreach ($json['data'] as $data) {
    $user = searchArray('name', 'Stafin', $data['users']['data']);
    if ($user) {
        echo "Found Stafin";
        foreach ($user['description']['data'] as $desc) {
            if (isset($desc['instagram'])) {
                echo ", Instagram is {$desc['instagram']}";
                break;
            }
        }
        break;
    }
}