-1

私は次のような配列構造を持っています

[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 = *)など、ULLIを継承する必要があります。子をネストされたLIに入れたい

コード

$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++;    
}
4

2 に答える 2

0

私はあなたが抱えている問題を正確に知りません。しかし、私はあなたがこのようなものが欲しいと思います:

<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つのアイテムを含む配列です。1番目のアイテムはhref/url、2番目のアイテムはラベル/テキストです。3番目のアイテムがある場合は、子(サブアイテム)になります。
  • サブアイテムはアイテムと同様に構成され、最初のアイテムはhref / url、2番目のアイテムはラベル/テキストです。

次に、次のコードで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>';
于 2012-04-18T13:08:03.633 に答える
0

URLをとして参照しているが、ループ内$keyを使用してURLにアクセスしているため、スクリプトは機能していません。$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++;    
}

しかし、配列からリストを作成する簡単な方法はこれです

//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>";
于 2012-04-18T11:15:41.027 に答える