【问题标题】:How do I extract multiple JSON objects from and array with PHP?如何使用 PHP 从数组中提取多个 JSON 对象?
【发布时间】:2021-03-06 02:57:39
【问题描述】:

我一直在试图弄清楚如何从一个 json 数组中提取多个 JSON 对象。

我在其他帖子中使用了此代码

$json = '[
            {"user_id":"1",
            "user_name":"Sayeed Amin",
            "time":"2019-11-06 13:21:26"}
        ]';

$someArray = json_decode($json, true);

foreach ($someArray as $key => $value) {
    echo $value["user_id"] . ", " . $value["user_name"] . ", " . $value["time"] . "<br>";
}

我可以将它用于数组中的单个 json 对象,结果很好。

结果:1,Sayeed Amin,2019-11-06 13:21:26

如果我有多个 json 对象和数组呢?喜欢

$json = '[
        {"name":"Name",
        "value":"me you",
        "id":0,
        "type":"name",
        "first":"me",
        "middle":"",
        "last":"you"
        },
        {"name":"Email",
        "value":"myemail@gmail.com",
        "id":1,
        "type":"email"
        },
        {"name":"Phone",
        "value":"+12015550000",
        "id":2,"type":"phone"
        },
        {"name":"Address",
        "value":"my address\nsomecity, somestate\nsomepost\nUS",
        "id":3,
        "type":"address",
        "address1":"my address",
        "address2":"",
        "city":"somecity",
        "state":"somestate",
        "postal":"somepost",
        "country":"US"
        }
]';

$someArray = json_decode($json, true);

foreach ($someArray as $key => $value) {
    echo $value["name"] . ", " . $value["value"] . "<br>";
}

结果:名字,我你
电子邮件,myemail@gmail.com
电话,+12015550000
地址,我的地址 somecity,somestate somepost US

期望的结果:姓名,我是你

【问题讨论】:

  • JSON 无效,Syntax error, malformed JSON。您可以使用php.net/manual/en/function.json-last-error.php 进行调试。
  • Jason 是 Argonaut,JSON 是数据传输标准
  • 您只需要在第一次迭代后退出。可以做类似3v4l.org/SZcSj 的事情。之所以可行,是因为第一个 id0... 也可以在循环之前将变量设置为 0,并在满足条件后增加 1。
  • 上面提供的代码有效,也许您在我编辑之前阅读过......或者您正在谈论我缺少的部分?
  • 你如何确定你想要的结果是什么?它总是数组中的第一项,"id": 0 还是"name": "Name"?如果它总是第一个项目,只需使用$someArray[0] 获取第一个对象。如果需要检查条件,请在循环中使用 if 语句。

标签: php arrays json extract


【解决方案1】:

如果你只想输出对象数组的第一次出现,那么适当地寻址数组

$json = '[
        {"name":"Name",
        "value":"me you",
        "id":0,
        "type":"name",
        "first":"me",
        "middle":"",
        "last":"you"
        },
        {"name":"Email",
        "value":"myemail@gmail.com",
        "id":1,
        "type":"email"
        },
        {"name":"Phone",
        "value":"+12015550000",
        "id":2,"type":"phone"
        },
        {"name":"Address",
        "value":"my address\nsomecity, somestate\nsomepost\nUS",
        "id":3,
        "type":"address",
        "address1":"my address",
        "address2":"",
        "city":"somecity",
        "state":"somestate",
        "postal":"somepost",
        "country":"US"
        }
]';

$arr = json_decode($json);

echo $arr[0]->name . ", " . $arr[0]->value . "\n";

结果

Name, me you

【讨论】:

    猜你喜欢
    • 2021-03-06
    • 2019-04-22
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多