在 php 中生成 <li> 个元素

generating <li> elements in php

这应该相对简单,但我在这里或其他地方找到的 none 解决方案完全有效。

我正在尝试显示包含品牌列表所有元素的 table。我手动添加了两个(阿迪达斯和耐克)只是为了测试显示,这些显示正确。然后我尝试使用品牌数组生成一个列表(数组 brandList 有两个项目,id 和 name)。输出是垃圾。

<ul class="brand-list">
    <li><a href="#">Adidas</a></li>
    <li><a href="#">Nike</a></li>
    <?php
        foreach ($brandList as $item) {
           $text = '<li><a href="#">'.$item[1].'</a></li>';
           echo("$text\n");
        }
    ?>
</ul>

预期输出:

 Adidas
 Nike
 Puma
 Asics

实际产量

Adidas
Nike
'.$item[1].''; echo("$text\n"); } ?>

我试过十几种不同的格式(使用单引号和双引号、反斜杠等),但它总是只显示一半的代码行而不是变量。我知道这很简单,但我花了太多时间搞砸了,但没有结果。

一种方法是让 PHP 生成 HTML 而不是回显字符串。我认为这比回声更清楚。

<ul class="brand-list">
    <li><a href="#">Adidas</a></li>
    <li><a href="#">Nike</a></li>
    <?php
        foreach ($brandList as $item) {
    ?>
        <li><a href="#"><?=$item[1]?></a></li>
    <?php
        }
    ?>
</ul>

您好,我认为您错过了循环中的起始 li 标记。 请检查此解决方案。

<ul class="brand-list">
<li><a href="#">Adidas</a></li>
<li><a href="#">Nike</a></li>
<?php
   $text="";
   foreach ($brandList as $item){
       $text .= '<li><a href="#">'.$item[1].'</a></li>';
      
    }
    echo($text);
?>

您的代码段有很多错误,坦率地说,我对它不起作用并不感到惊讶。

  1. 您在 foreach 循环中使用了错误的语法。
  2. 您正在创建的 <li></li> 没有开始标签,只有一个锚标签 <a></a> 和一个结束列表项标签 </li>
  3. $test 是一个带引号的变量,在 echo 期间使用引号是错误的,因为 href 中的 " 将关闭第一个引用变量输出其他作为字符串而不是 HTML 标签。
  4. 虽然不是很重要,但是放弃 \n 字符。您的浏览器将在有或没有它的情况下以块格式呈现列表。

将您的代码段改成这样

<ul class="brand-list">
    <li><a href="#">Adidas</a></li>
    <li><a href="#">Nike</a></li>
    <?php
        foreach($brandList as $item) {
    ?>
           <li><a href="#"><?=$item[1]?></a></li>
    <?php
        }
    ?>
</ul>

如果您更喜欢当前的语法,请将其更改为此

<ul class="brand-list">
    <li><a href="#">Adidas</a></li>
    <li><a href="#">Nike</a></li>
    <?php
        foreach($brandList as $item) {
           $text = '<li><a href="#">'.$item[1].'</a></li>';
           echo($text);
        }
    ?>
</ul>