首页 > 解决方案 > PHP 元素输出显示 array() 而不是字符串

问题描述

我目前正在从 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
    )

但是由于某种原因,当我循环并尝试将数组键作为标题和子项作为链接回显时,它只是转储了“数组”这个词

<?php foreach($displayNames as $key => $displayName):?>
<h2><?php echo $key; ?></h2>
<a><h4><?php echo $displayName; ?></h4></a>
<?php endforeach;?>

我尝试按索引转储,但它是空白的。我需要另一个嵌套的 foreach 来获取每个孩子吗?

标签: phparrays

解决方案


您有多维/嵌套数组,因此 $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;?>

推荐阅读