我想在网页上显示不同省份的商店,这些商店位于一个多维数组中,但我无法显示缺少键的嵌套数组。
我尝试了给数组一个键,尝试使用“parse.Land.0”、“parse.Land.i”和“parse.Land [0]”来获取信息,但都没有成功。在“parse.Land [0]”的情况下,它会返回国家名称的第一个字母而不是嵌套数组中的第一个结果。我们还尝试以几种不同的方式构建数组,但没有一种方法能够工作。
PHP代码从数据库获取信息:
我想能够通过“Info”键获取内部数组的值。但我得到了一个错误,说getData()未定义,或者只有国家名称的第一个字母。我希望能够像这样“parse.Land.7.Noord-Holland.Info”并返回“Placeholder”的值。需要帮助,谢谢。
我尝试了给数组一个键,尝试使用“parse.Land.0”、“parse.Land.i”和“parse.Land [0]”来获取信息,但都没有成功。在“parse.Land [0]”的情况下,它会返回国家名称的第一个字母而不是嵌套数组中的第一个结果。我们还尝试以几种不同的方式构建数组,但没有一种方法能够工作。
PHP代码从数据库获取信息:
$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数组:
{"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用于在网页上显示信息:
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”并返回“Placeholder”的值。需要帮助,谢谢。
parse[0]
吗?看起来像是它。 - joyBlanksparse[0]
时,它将得出{"Groningen":[{"Info":""},{"Info":""}]}
。如果你需要打印它,会显示 [object Object],如果你需要第一个元素,则Object.keys(parse[0])[0]
应该给你 Groningen。 - joyBlanks