要列出的 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 数组的主要内容,如果未能解决你的问题,请参考以下文章