使用foreach循环和数组创建导航列表项

时间:2014-08-07 20:37:59

标签: php foreach

我正在尝试使用php使用foreach循环输出导航列表,我遇到了字符串转换的麻烦。

<ul>
            <?php 
            $taco = array("This", "That", "And", "Repeat");

            foreach($taco as $php) {
                print "<li class=\"nav\"><a href=\"# $taco\"> $taco</a><li>";
            }
            ?>
        </ul>

如何在不调整变量的情况下在href中添加#?

3 个答案:

答案 0 :(得分:0)

您正尝试使用数组输出值。 $php包含

foreach($taco as $php) {
    print "<li class=\"nav\"><a href=\"#{$php}\"> {$php}</a></li>";
}

编辑:我经常更喜欢使用sprintf()来输出此类语句。每个都是他们自己的,但这是一个很好的方法:

$tag = '<li class="nav"><a href="#%s">%s</a></li>';
foreach($taco as $php) {
    print sprintf($tag, $php, $php);
}

答案 1 :(得分:0)

foreach的语法是:

foreach($array as $element) 

所以这会奏效:

$taco = array("This", "That", "And", "Repeat");

foreach($taco as $taco_elem) {
     print "<li class=\"nav\"><a href=\"#$taco_elem\">$taco_elem</a></li>";
}

答案 2 :(得分:-1)

你的foreach没有意义,你一定要阅读更多有关数组和循环的内容。

您尝试在每一行上打印整个数组两次,您应该在循环的当前状态下打印实际元素。

至于你的打印问题......然后停止打印HTML ....执行此操作:

<ul>
    <?php $tacos = array("This", "That", "And", "Repeat"); ?>

    <?php foreach ($tacos as $taco) : ?>

        <li class="nav">
            <a href="#<?php echo $taco; ?>"><?php echo $taco; ?></a>
        </li>

    <?php endforeach; ?>

</ul>

将整个HTML置于回显中是一种不好的做法。

你应该阅读以下所有内容:

http://php.net/manual/en/control-structures.alternative-syntax.php

http://php.net/manual/en/control-structures.foreach.php

http://php.net/manual/en/language.types.array.php