Php 打印嵌套在Foreach循环中的ulli
我有一个数组结构,比如Php 打印嵌套在Foreach循环中的ulli,php,arrays,foreach,Php,Arrays,Foreach,我有一个数组结构,比如 [members] => Members List | 26 [member.php?id=3] => John | 26-26 [member.php?id=4] => Alice | 26-26 [member.php?id=5] => Michel | 26-26 [news] => News details | 45 [alerts] > Alerts | 32 我使用foreach循环遍历它。我想把整个列表打印成ull
[members] => Members List | 26
[member.php?id=3] => John | 26-26
[member.php?id=4] => Alice | 26-26
[member.php?id=5] => Michel | 26-26
[news] => News details | 45
[alerts] > Alerts | 32
我使用foreach循环遍历它。我想把整个列表打印成ulli。成员列表将是一个LI,但是当它的孩子出现时(memeber.php?id=*)等,它应该继承UL-LI。我希望孩子在一个嵌套的LIs中
代码
$counter = 0;
foreach($array as $key => $values)
{
if($counter == 0)
{
echo "<ul>";
}
if($key != "" && $key != "END")
{
echo "<li>".$values."</li>";
}
if($key == "END")
{
echo "</ul>";
}
$counter++;
}
$counter=0;
foreach($key=>$value的数组)
{
如果($counter==0)
{
回声“”;
}
如果($key!=“&&&$key!=“END”)
{
回显“- ”$values。”
”;
}
如果($key==“END”)
{
回声“
”;
}
$counter++;
}
您的脚本无法运行,因为您已将url引用为$key
,但仍在循环中使用$url
访问它们
下面是你应该怎么做
$counter = 0;
foreach($array as $url => $values)
{
if($counter == 0)
{
echo "<ul>";
}
if($url != "" && $url != "END")
{
echo "<li>".$values."</li>";
}
if($url == "END")
{
echo "</ul>";
}
$counter++;
}
$counter=0;
foreach($url=>$value的数组)
{
如果($counter==0)
{
回声“”;
}
如果($url!=“&&&$url!=“END”)
{
回显“- ”$values。”
”;
}
如果($url==“结束”)
{
回声“
”;
}
$counter++;
}
但是从数组创建列表的一种简单方法是
//First remove the END key from the array, is not needed
echo "<ul>";
foreach($array as $link => $value) {
//THERE is no way $link can be ""
echo "<li><a href=\"$link\">$value</a></li>";
}
echo "</ul>";
//首先从数组中删除结束键,不需要
回声“”;
foreach($link=>$value的数组){
//$link不可能是“”
回声“”;
}
回声“
”;
我不知道你到底有什么问题。但我认为,你想要这样的东西:
<ul>
<li>
<a href="members">Members List</a>
<ul>
<li><a href="member.php?id=3">John</a></li>
<li><a href="member.php?id=4">Alice</a></li>
<li><a href="member.php?id=5">Michel</a></li>
</ul>
</li>
<li><a href="news">News details</a></li>
<li><a href="alerts">Alerts</a></li>
</ul>
$data = array(
array('members', 'Members List', array(
array('member.php?id=3', 'John'),
array('member.php?id=4', 'Alice'),
array('member.php?id=5', 'Michel'),
)),
array('news', 'News details'),
array('alerts', 'Alerts')
);
- $data是数组
- $data中的项是至少包含2项的数组。第一项是href/url, 第二项是标签/文本。如果它有第三项,那么它将是 儿童(分项)
- 子项的组成类似于项,其中第一项是href/url,第二项是 项目为标签/文本
echo '<ul>';
foreach ($data as $item) {
// $item[0] -> href/url, $item[1] -> label/text, $item[2] -> subitems
echo '<li>';
echo '<a href="' . $item[0] . '">' . $item[1] . '</a>';
if (isset($item[2])) { // if this item has subitems...
echo '<ul>';
foreach ($item[2] as $subitem) {
// $subitem[0] -> href/url, $subitem[1] -> label/text
echo '<li><a href="' . $subitem[0] . '">' . $subitem[1] . '</a></li>';
}
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
echo'';
foreach($数据作为$项){
//$item[0]->href/url、$item[1]->label/text、$item[2]->子项
回音“- ”;
回声';
if(isset($item[2]){//如果此项有子项。。。
回声“
”;
foreach($item[2]作为$subitem){
//$subitem[0]->href/url,$subitem[1]->label/text
回音“”;
}
回声“
”;
}
回音“ ”;
}
回声“
”;
您的问题是什么?如果您想知道如何做到这一点,我建议添加您迄今为止尝试过的代码(因此不是免费的编码服务)和一个从上述数据生成的输出示例。我已经可以说的是,您可能应该更改数组的结构,以使生成更容易。“parent”和“child”元素之间没有明显的联系。我可以看看,您是如何使用foreach循环遍历它的吗?@HardCode,数组中没有嵌套任何内容。这就是问题所在。[members]元素后面的3个元素应位于嵌套的ulli中。数组是纯数组,必须获得嵌套输出。@硬代码,修改数组结构并创建递归函数以生成列表。