【问题标题】:using Laravel 5.7 : how can i get json value name from an array ?使用 Laravel 5.7:如何从数组中获取 json 值名称?
【发布时间】:2019-05-11 23:09:26
【问题描述】:

我想从 JSON 数组中获取名称值。

{
"workspaces": {
    "workspace": [
        {
            "name": "SITR",
            "href": "http://localhost:8080/geoserver/rest/workspaces/SITR.json"
        },
        {
            "name": "fire",
            "href": "http://localhost:8080/geoserver/rest/workspaces/fire.json"
        },
        {
            "name": "info-geospasial",
            "href": "http://localhost:8080/geoserver/rest/workspaces/info-geospasial.json"
        },
        {
            "name": "pertanian",
            "href": "http://localhost:8080/geoserver/rest/workspaces/pertanian.json"
        },
        {
            "name": "semangat21",
            "href": "http://localhost:8080/geoserver/rest/workspaces/semangat21.json"
        },
        {
            "name": "semangat",
            "href": "http://localhost:8080/geoserver/rest/workspaces/semangat.json"
        },
        {
            "name": "cobalagi",
            "href": "http://localhost:8080/geoserver/rest/workspaces/cobalagi.json"
        },
        {
            "name": "cobak",
            "href": "http://localhost:8080/geoserver/rest/workspaces/cobak.json"
        }
    ]
}

}

我已经尝试了以下

$responsArray=json_decode($res->getBody());
dd($responsArray->workspaces->workspace->name);

但它返回“试图访问非对象的属性”。 任何人都可以帮忙吗? 我很感激,谢谢你

【问题讨论】:

  • 当收到这样的错误消息时,在根对象上使用 Laravel 辅助函数 dd() 会很有帮助,在本例中为 $responseArray。这样,您可以浏览可以帮助您发现代码中的错误的结构。所以,试试dd($responseArray); 看看你会得到什么:-)

标签: php arrays json laravel laravel-5.7


【解决方案1】:

将所有对象级别转换为多维关联数组结构,传递true 标志作为json_decode() 函数的第二个参数,然后像访问多维数组一样访问它:

$nameArr = [];
$responseArray = json_decode($res->getBody(), true); // set true here
foreach ($responseArray['workspaces']['workspace'] as $row) {
    $nameArr[] = $row['name'];
}
dd($nameArr);

【讨论】:

    【解决方案2】:
    $nameArr = [];
    $responsArray=json_decode($res->getBody());
    foreach($responsArray->workspaces->workspace as $row)
    {
      $nameArr[] = $row->name;
    }
    dd($nameArr);
    

    【讨论】:

    • 请在您的回答中添加一些解释。
    猜你喜欢
    • 2019-09-23
    • 2020-12-12
    • 1970-01-01
    • 2011-10-27
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 2015-07-22
    相关资源
    最近更新 更多