我可能错误地搜索但是我找不到一个完全有助于理解如何从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
答案 0 :(得分:1)
尝试此操作,使用isset检查用户是否在用户部分,array_filter加in_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 首先检查一下,如果可以,请告诉我。