Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 打印嵌套在Foreach循环中的ulli_Php_Arrays_Foreach - Fatal编程技术网

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,第二项是 项目为标签/文本
然后,以下代码将其转换为HTML:

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中。数组是纯数组,必须获得嵌套输出。@硬代码,修改数组结构并创建递归函数以生成列表。