我目前正在通过sql查询构建数组
$displayResult = $mysqlConn->query($getDisplays);
$displayNames = array();
foreach($displayResult as $subArray) {
if(!array_key_exists($subArray['location_name'], $displayNames)) {
$displayNames[$subArray['location_name']] = array();
}
$displayNames[$subArray['location_name']][] = $subArray['display_name'];
}
print_r($displayNames);
它的打印方式如下:
Array
(
[Office 1] => Array
(
[0] => lobby
[1] => break room
)
[Office 2] => Array
(
[0] => lobby
[1] => break room
)
但是由于某种原因,当我循环并尝试将数组键作为标题回显,将子项作为链接时,它只会转储单词“ array”
<?php foreach($displayNames as $key => $displayName):?>
<h2><?php echo $key; ?></h2>
<a><h4><?php echo $displayName; ?></h4></a>
<?php endforeach;?>
我尝试按索引转储,但它为空。我需要另一个嵌套的foreach来生每个孩子吗?
答案 0 :(得分:1)
您有多维/嵌套数组,因此$ displayName实际上也是数组,您尝试将其打印为字符串。只需使用其索引来调用其子级即可。 最简单的解决方案是:
<?php foreach($displayNames as $key => $displayName):?>
<h2><?php echo $key; ?></h2>
<a><h4><?php echo $displayName[0] . '-' . $displayName[1]; ?></h4></a>
<?php endforeach;?>
对于多个元素,您可以使用for
循环或foreach
<?php foreach($displayNames as $key => $displayName):?>
<h2><?php echo $key; ?></h2>
<?php foreach($displayName as $key2 => $displayNameRoom): ?>
<a><h4><?php echo $displayNameRoom; ?></h4></a>
<?php endforeach; ?>
<?php endforeach;?>
答案 1 :(得分:1)
您的数组如下所示:
Array
(
[Office 1] => Array
(
[0] => lobby
[1] => break room
)
[Office 2] => Array
(
[0] => lobby
[1] => break room
)
所以在您的foreach循环中,当您这样做时:
<?php foreach($displayNames as $key => $displayName):?>
<h2><?php echo $key; ?></h2>
<a><h4><?php echo $displayName; ?></h4></a>
<?php endforeach;?>
$displayName
是一个数组。
要获取“大厅”或“休息室”的值,您应该对“大厅”执行$displayName[0]
,对于“休息室”进行$displayName[1]
。
编辑:
如果将来您有两个以上的值,则有两个解决方案:
foreach ($displayName as $value) {
echo $value; // you will get "lobby", then "break room", then the other value
}
或
$i = 0;
do {
echo $displayName[$i];
$i++;
} while (isset($displayName[$i]));
结果与以前相同,只是在有值的情况下回显每个值!
希望有帮助
答案 2 :(得分:0)
您需要的确切输出。
基本上,您的$displayName
包含一个数组lobby
和break room
。
<?php foreach ($displayNames as $location): ?>
<?php foreach ($location as $displayKey => $displayName): ?>
<h2><?= $displayKey ?></h2>
<a><h4><?= $displayName ?></h4></a>
<?php endforeach; ?>
<?php endforeach; ?>
答案 3 :(得分:-1)
只需:
<?php foreach($displayNames as $key => $displayName):?>
<h2><?php echo $displayNames[$key]; ?></h2>
<a><h4><?php echo $displayName; ?></h4></a>
<?php endforeach;?>