拉出与搜索或匹配的数据相关的所有值和键

时间:2016-09-08 06:23:09

标签: php json

我可能错误地搜索但是我找不到一个完全有助于理解如何从json文件中提取这个多维数组中的所有数据的主题。我试图提取与某个术语或数据相关的所有数据并返回其键和值。

到目前为止,我已经尝试了这个,它有点工作。

JSON - https://gist.github.com/Ryahn/ac8fcc8ae77e9a6ee9138e268b592ed3

$result = file_get_contents('21st.json');
$json = json_decode($result,true);

$term = 871957;

foreach ($json as $key => $value)
{

    if ($value = $term)
    {
        echo $value;
        echo $key;
        foreach ( $value as $key1 => $value2 )
        {
            if ($value2 = $term)
            {
                echo $value2;
                echo $key1;
                foreach ( $value2 as $key2 => $value3 )
                {
                    echo $value3;
                }
            }
        }
    }
}

有多个级别和父级可能与一个ID绑定。我还没弄明白如何一次性拉出它们。

提前谢谢< 3

2 个答案:

答案 0 :(得分:1)

尝试此操作,使用isset检查用户是否在用户部分,array_filterin_array来搜索用户数组:

$result = file_get_contents('21st.json');
$json = json_decode($result,true);

$userId = 871957;
$user = isset($json['users'][$userId]) ? $json['users'][$userId] : null;

$tags = [];
if ($user) {
    $tags = array_filter($json['tags'], function($tag) use ($userId) {
        return in_array($userId, $tag['users']);
    });
}

$tagIds = array_keys($tags);

答案 1 :(得分:0)

在代码中进行了一些调整,将=替换为==

$result = file_get_contents('21st.json');
$json = json_decode($result,true);

$term = 871957;

foreach ($json as $key => $value)
{

    if ($value == $term)
    {
        echo $value;
        echo $key;
        foreach ( $value as $key1 => $value2 )
        {
            if ($value2 == $term)
            {
                echo $value2;
                echo $key1;
                foreach ( $value2 as $key2 => $value3 )
                {
                    echo $value3;
                }
            }
        }
    }
}

P.S 首先检查一下,如果可以,请告诉我。