在PHP中从Json提取关键元素

我需要在PHP中使用Json文件,以便可以在其主要元素的特定键中进行迭代。


我有这个示例Json数据:


[{"A": [

    {

        "name": "object 1",

        "code": "x001",

        "date": "2018-01-01T23:00:00-0600"

    },

    {

        "name": "object 2",

        "code": "x002",

        "date": "2018-01-01T23:00:00-0600"

    },

    {

        "name": "object 3",

        "code": "x003",

        "date": "2018-01-01T23:00:00-0600"

    }

]},{"B": [

    {

        "name": "object 1",

        "code": "y001"

        "date": "2018-01-01T23:00:00-0600"

    },

    {

        "name": "object 2",

        "code": "y002",

        "date": "2018-01-01T23:00:00-0600"

    }

]}]

据我所知,我可以像这样处理一个Json文件(在主键A和B中取消嵌套元素):


<?php

$url = './data.json';

$data = file_get_contents($url);

echo "<!--- File contents -->\n";

var_dump($data);

$contents = json_decode($data, true);

echo "<!--- Associative Array -->\n";

var_dump($contents);



echo "<!--- BEGIN -->";

foreach ($contents as $element) {

        echo "Name: " . $element['name'] . "\n";

        echo "Code: " . $element['code'] . "\n";

        echo "Date: " . $element['date'] . "\n";

        echo "- - - - - -\n";

}

echo "<!--- END -->";

?>

我想做的是在给定键内调用一个循环,例如,一个与B对应的所有元素的循环:


    {

        "name": "object 1",

        "code": "y001"

        "date": "2018-01-01T23:00:00-0600"

    },

    {

        "name": "object 2",

        "code": "y002",

        "date": "2018-01-01T23:00:00-0600"

    }

可能是将这些元素提取到第二个关联数组或另一个建议的方法中。


预期结果需要为:


Name: object 1

Code: y001

Date: 2018-01-01T23:00:00-0600

- - - - - -

Name: object 2

Code: y002

Date: 2018-01-01T23:00:00-0600

- - - - - -

忽略A元素


暮色呼如
浏览 155回答 3
3回答

噜噜哒

该脚本可以帮助您设计和输出所需的字符串。它适用于$element["B"]。您可以简单地foreach为数组的其他元素(例如)编写类似的代码$element["A"]。$url = './data.json';$data = file_get_contents($url);$output = "<!--- File contents -->\n";$contents = json_decode($data, true);$output .= "<!--- Associative Array -->\n";$output .= "<!--- BEGIN -->\n";foreach ($contents as $elements) {&nbsp; &nbsp; if (!$elements["B"]) {continue;} // You might remove this and add other elements of your inputs such as $elements["A"]&nbsp; &nbsp; foreach ($elements["B"] as $key => $element) {&nbsp; &nbsp; &nbsp; &nbsp; $output .= "Name: " . $element['name'] . "\n";&nbsp; &nbsp; &nbsp; &nbsp; $output .= "Code: " . $element['code'] . "\n";&nbsp; &nbsp; &nbsp; &nbsp; $output .= "Date: " . $element['date'] . "\n";&nbsp; &nbsp; &nbsp; &nbsp; $output .= "- - - - - -\n";&nbsp; &nbsp; }}$output .= "<!--- END -->\n";echo $output;您可能不需要逐行回显,您可以将其存储在诸如$output和结尾的变量中echo $output;。输出:<!--- File contents --><!--- Associative Array --><!--- BEGIN -->Name: object 1Code: y001Date: 2018-01-01T23:00:00-0600- - - - - -Name: object 2Code: y002Date: 2018-01-01T23:00:00-0600- - - - - -<!--- END -->
打开App,查看更多内容
随时随地看视频慕课网APP