为了账号安全,请及时绑定邮箱和手机立即绑定

在PHP中从Json提取关键元素

在PHP中从Json提取关键元素

PHP
暮色呼如 2021-04-27 13:41:22
我需要在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 1Code: y001Date: 2018-01-01T23:00:00-0600- - - - - -Name: object 2Code: y002Date: 2018-01-01T23:00:00-0600- - - - - -忽略A元素
查看完整描述

3 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

该脚本可以帮助您设计和输出所需的字符串。它适用于$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) {

    if (!$elements["B"]) {continue;} // You might remove this and add other elements of your inputs such as $elements["A"]

    foreach ($elements["B"] as $key => $element) {

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

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

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

        $output .= "- - - - - -\n";

    }


}

$output .= "<!--- END -->\n";


echo $output;

您可能不需要逐行回显,您可以将其存储在诸如$output和结尾的变量中echo $output;。


输出:

<!--- File contents -->

<!--- Associative Array -->

<!--- BEGIN -->

Name: object 1

Code: y001

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

- - - - - -

Name: object 2

Code: y002

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

- - - - - -

<!--- END -->


查看完整回答
反对 回复 2021-05-14
  • 3 回答
  • 0 关注
  • 154 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信