首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用PHP迭代JSON

用PHP迭代JSON
EN

Stack Overflow用户
提问于 2017-03-29 03:41:29
回答 3查看 46关注 0票数 0

我不知道如何从下面的JSON获取以下键/值:

我需要打印出一个for循环:

“项目”,即“测试-项目-1”

“数据集”,即“dataset1”

‘权限’i.e‘角色:作者,组: test1@test.com’

代码语言:javascript
运行
复制
{
   "projects":{
      "test-project-1":{
         "datasets":{
            "dataset1":{
               "permissions":{
                  "role":"WRITER",
                  "group":"test1@test.com"
               }
            },
            "dataset2":{
               "permissions":{
                  "role":"READER",
                  "group":"test2@test.com"
               }
            },
            "dataset3":{
               "permissions":{
                  "role":"READER",
                  "group":"test3@test.com"
               }
            },
            "dataset4":{
               "permissions":{
                  "role":"READER",
                  "group":"test4@test.com"
               }
            },
            "dataset5":{
               "permissions":{
                  "role":"READER",
                  "group":"test5@test.com"
               }
            }
         }
      },
      "test-project-2":{
         "datasets":{
            "dataset1":{
               "permissions":{
                  "role":"WRITER",
                  "group":"test1@test.com"
               }
            },
            "dataset2":{
               "permissions":{
                  "role":"READER",
                  "group":"test2@test.com"
               }
            },
            "dataset3":{
               "permissions":{
                  "role":"READER",
                  "group":"test3@test.com"
               }
            },
            "dataset4":{
               "permissions":{
                  "role":"READER",
                  "group":"test4@test.com"
               }
            },
            "dataset5":{
               "permissions":{
                  "role":"READER",
                  "group":"test5@test.com"
               }
            }
         }
      }
   }
}

我试过了,但唯一能打印出来的就是“数组”。

像这样的事情行不通:

代码语言:javascript
运行
复制
$new_json = {path_to_json};
$new_projects = $new_json['projects'];
foreach ($new_projects as $project) {
    echo $project . "<br>";
    foreach ($new_projects['datasets'] as $datasets){
        echo $datasets . "<br>";
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-29 03:48:24

PHP代码演示

代码语言:javascript
运行
复制
$json='{
   "projects":{
      "test-project-1":{
         "datasets":{
            "dataset1":{
               "permissions":{
                  "role":"WRITER",
                  "group":"test1@test.com"
               }
            },
            "dataset2":{
               "permissions":{
                  "role":"READER",
                  "group":"test2@test.com"
               }
            },
            "dataset3":{
               "permissions":{
                  "role":"READER",
                  "group":"test3@test.com"
               }
            },
            "dataset4":{
               "permissions":{
                  "role":"READER",
                  "group":"test4@test.com"
               }
            },
            "dataset5":{
               "permissions":{
                  "role":"READER",
                  "group":"test5@test.com"
               }
            }
         }
      },
      "test-project-2":{
         "datasets":{
            "dataset1":{
               "permissions":{
                  "role":"WRITER",
                  "group":"test1@test.com"
               }
            },
            "dataset2":{
               "permissions":{
                  "role":"READER",
                  "group":"test2@test.com"
               }
            },
            "dataset3":{
               "permissions":{
                  "role":"READER",
                  "group":"test3@test.com"
               }
            },
            "dataset4":{
               "permissions":{
                  "role":"READER",
                  "group":"test4@test.com"
               }
            },
            "dataset5":{
               "permissions":{
                  "role":"READER",
                  "group":"test5@test.com"
               }
            }
         }
      }
   }
}';
$array=  json_decode($json,true);
foreach($array["projects"] as $projectName => $projects)
{
    echo "Project name ".$projectName."<br/>";
    foreach($projects["datasets"] as $databaseNames => $databaseData)
    {
        echo "  Database name ".$databaseNames."<br/>";
        echo "  Database role ".$databaseData["permissions"]["role"]."<br/>";
        echo "  Database group ".$databaseData["permissions"]["group"]."<br/>";
    }
}
票数 0
EN

Stack Overflow用户

发布于 2017-03-29 04:03:47

格式为foreach (“数组”作为“数组中的键”)

代码语言:javascript
运行
复制
foreach ($new_json as $new_projects) {
    echo $new_projects . "<br>";
    $datasets=$new_projects['datasets'];
    foreach ($new_projects as $datasets){
        echo $datasets . "<br>";
    }
}
票数 0
EN

Stack Overflow用户

发布于 2017-03-29 04:04:06

您需要使用json_decode PHP手册

代码语言:javascript
运行
复制
$jsonArray = json_decode($jsonData, true);
foreach($jsonArray as $project){
    echo $project . '<br>';
    foreach($project['datasets'] as $dataset)
    {
        echo $dataset . '<br>';
        foreach($dataset['permissions'] as $permissions)
        {
            echo sprintf('Role: %s, group: %s<br>', $permissions['role'], $permissions['group'];
        }
    }
}

如果不希望json转换为数组,则需要将false作为第二个参数传递,然后返回stdClass。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43083870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档