要列出的 PHP 数组

Posted

技术标签:

【中文标题】要列出的 PHP 数组【英文标题】:PHP Array to List 【发布时间】:2010-12-21 06:00:08 【问题描述】:

我如何从这个多维数组中走出来:

Array (
  [Camden Town] => Array (
    [0] => La Dominican
    [1] => A Lounge
  ), 
  [Coastal] => Array (
    [0] => Royal Hotel
  ), 
  [Como] => Array (
    [0] => Casa Producto 
    [1] => Casa Wow
  ), 
  [Florence] => Array (
    [0] => Florenciana Hotel
  )
)

到这里:

<ul>
  <li>Camden Town</li>
  <ul>
    <li>La Dominican</li>
    <li>A Lounge</li>
  </ul>
  <li>Coastal</li>
  <ul>
    <li>Royal Hotel</li>
  </ul>
  ...
</ul>

以上是html...

【问题讨论】:

这么多东西。这是我的最后一口气 【参考方案1】:
//code by acmol
function array2ul($array) 
    $out = "<ul>";
    foreach($array as $key => $elem)
        if(!is_array($elem))
                $out .= "<li><span>$key:[$elem]</span></li>";
        
        else $out .= "<li><span>$key</span>".array2ul($elem)."</li>";
    
    $out .= "</ul>";
    return $out; 

我想你正在寻找这个。

【讨论】:

摇滚明星代码就在这里。感谢您为我节省了构建它的时间! 我喜欢它是递归的【参考方案2】:

这是一种比回显 html 更易于维护的方法...

<ul>
    <?php foreach( $array as $city => $hotels ): ?>
    <li><?= $city ?>
        <ul>
            <?php foreach( $hotels as $hotel ): ?>
            <li><?= $hotel ?></li>
            <?php endforeach; ?>
        </ul>
    </li>
    <?php endforeach; ?>
</ul>

这是另一种将 h2s 用于城市而不是嵌套列表的方法

<?php foreach( $array as $city => $hotels ): ?>
<h2><?= $city ?></h2>
    <ul>
        <?php foreach( $hotels as $hotel ): ?>
        <li><?= $hotel ?></li>
        <?php endforeach; ?>
    </ul>
<?php endforeach; ?>

输出的 html 格式不是最漂亮的,但您可以修复它。这完全取决于您是想要漂亮的 html 还是更易于阅读的代码。我完全是为了更容易阅读代码 =)

【讨论】:

这是正确答案。完美的。感谢您向我介绍 endforeach。这正是我一直在寻找的。​​span> @Ash 你可能会注意到,这里使用endforeach是为了可读性,所以可以使用普通的foreach。见php.net/manual/en/control-structures.alternative-syntax.php【参考方案3】:

重构的acmol函数

/**
 * Converts a multi-level array to UL list.
 */
function array2ul($array) 
  $output = '<ul>';
  foreach ($array as $key => $value) 
    $function = is_array($value) ? __FUNCTION__ : 'htmlspecialchars';
    $output .= '<li><b>' . $key . ':</b> <i>' . $function($value) . '</i></li>';
  
  return $output . '</ul>';

【讨论】:

【参考方案4】:

假设您的数据在 $array 中。

echo '<ul>';
foreach ($array as $city => $hotels)

    echo "<li>$city</li>\n<ul>\n";
    foreach ($hotels as $hotel)
    
        echo "    <li>$hotel</li>\n";
    
    echo "</ul>\n\n";

echo '</ul>';

没有测试过,但我很确定它是对的。

【讨论】:

这不是所要求的,但它可能是预期的。一些 CSS 将完成格式化。 实际上上面的代码只为每个父母提供了一个“孩子”,所以例如卡姆登镇只列出了一家酒店而不是两家。 建议在 PHP 中使用 echo over print

以上是关于要列出的 PHP 数组的主要内容,如果未能解决你的问题,请参考以下文章

列出来自数组的信息 (php)

php wordpress:列出数组中所有已安装的插件

PHP array_multisort—对多个数组或多维数组进行排序

js数组组合,数组个数不定,列出所有组合

如何在数组中列出 wordpress 类别 ID 和名称?

如何使用 PHP 在字母下显示数组?