首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解析没有键的多维JSON数组

解析没有键的多维JSON数组
EN

Stack Overflow用户
提问于 2019-09-16 09:48:03
回答 2查看 563关注 0票数 3

我试图在网页上显示不同省份,包括它们在多维数组中的商店,但是我无法显示缺少键的嵌套数组。

我尝试给数组一个键,尝试"parse.Land.0“、"parse.Land.i”和"parse.Land“来获取信息,但似乎没有一条有效。对于"parse.Land",它将返回国家名称的第一个字母,而不是嵌套数组中的第一个结果。我们还试图用几种不同的方式构造数组,但没有一种方法起作用。

从数据库获取信息的PHP代码:

代码语言:javascript
复制
$Land = ['Land' => $_GET['data']];

$Nederland = array("Groningen", "Friesland", "Drenthe", "Overijssel", "Flevoland", "Gelderland", "Utrecht", "Noord-Holland", "Zuid-Holland", "Zeeland", "Noord-Brabant", "Limburg");
$Andere = array("Etc", "Etcetera");
switch ($_GET['data']) {
    case "Nederland":
        $country = $Nederland;
        $fieldID = 5;
        break;
    case "Andere":
        $country = $Andere;
        $fieldID = 18;
        break; 
}
    foreach($country as $data) {
        $locationData = [];
        $getProvince= $_db->prepare("SELECT user_id, value FROM wp_bp_xprofile_data WHERE field_id = ".$fieldID." AND value = '".$data."'");
        $getProvince->execute();

        $displayProvince = $getProvince->fetchAll(PDO::FETCH_ASSOC);
        foreach($displayProvince as $dataProvince) {
           $getName= $_db->prepare("SELECT value FROM wp_bp_xprofile_data WHERE field_id = 1 AND user_id = ".$dataProvince['user_id']);
           $getName->execute();
           $displayName = $getName->fetchAll(PDO::FETCH_ASSOC);
           foreach($displayName as $dataName) {
               $locationData[] = ['Info' => $dataName['value']];
           }
        }
        $Land[] = [$data => $locationData];
    }

echo json_encode($Land);

PHP代码的结果是这个JSON数组:

代码语言:javascript
复制
{"Land":"Nederland","0":{"Groningen":[{"Info":""},{"Info":""}]},"1":{"Friesland":[]},"2":{"Drenthe":[]},"3":{"Overijssel":[]},"4":{"Flevoland":[]},"5":{"Gelderland":[]},"6":{"Utrecht":[]},"7":{"Noord-Holland":[{"Info":"Placeholder"},{"Info":"Test"},{"Info":"Anna Paulowna"},{"Info":"Den Helder"}]},"8":{"Zuid-Holland":[{"Info":"zuidholland"},{"Info":"zuidholland2"}]},"9":{"Zeeland":[{"Info":"Middelburg"}]},"10":{"Noord-Brabant":[]},"11":{"Limburg":[]}}

Ajax用于在网页上显示信息:

代码语言:javascript
复制
function getData(land) {
        $.ajax({
            type: 'GET',
            url: '/GetData.php',
            data: {data: land},
            success: function (data) {

                var parse = JSON.parse(data);
                var object = Object.keys(parse).length;
                var element = document.getElementById('content');
                for (var i = 0; i < object; i++) {
                    var mainDiv = document.createElement('div');
                    mainDiv.setAttribute('class', 'accordion_holder');
                    element.appendChild(mainDiv);
                    var accordion = document.createElement('button');
                    accordion.setAttribute('class', 'accordion');
                    mainDiv.appendChild(accordion);
                    var icon = document.createElement('i');
                    icon.setAttribute('class', 'fas fa-angle-right');
                    accordion.appendChild(icon);
                    accordion.insertAdjacentHTML('afterbegin', parse.Land);
                }
                console.log(parse);
            }
        });

    var element = document.getElementById(land);

    element.classList.add('active');

    }

我希望能够用键"Info“获取内部数组的值。相反,我要么收到一个错误,说明getData()是未定义的,要么只是国家的第一个字母。我希望能够按照"parse.Land.7.Noord-Holland.Info“这样做,并返回值”占位符“。

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-16 10:26:22

parse[0]将计算到

{“Groningen”:{“Info”:“},{”Info“:”}}

当您打印这个元素时,如果您需要第一个元素,它将是[object Object]

Object.keys(parse[0])[0]

应该给你格罗宁根

票数 2
EN

Stack Overflow用户

发布于 2019-09-17 10:34:12

在您的情况下,您可以使用以下方法:

代码语言:javascript
复制
Object.keys(parse[i])[0])

循环遍历所有结果。

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

https://stackoverflow.com/questions/57954250

复制
相关文章

相似问题

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