генерация элементов в php

#php #html #html-lists

#php #HTML #html-списки

Вопрос:

Это должно быть относительно просто, но ни одно из решений, которые я нашел здесь или где-либо еще, не работает вообще.

Я пытаюсь отобразить таблицу, содержащую все элементы списка брендов. Я добавил два вручную (Adidas и Nike) просто для проверки дисплея, и они отображаются правильно. Затем я попытался сгенерировать список, используя массив брендов (массив 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("$textn");
        }
    ?>
</ul>
 

ожидаемый результат:

  Adidas
 Nike
 Puma
 Asics
 

фактический объем производства

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

Я пробовал форматировать дюжину различных способов (с помощью одинарных и двойных кавычек, обратной косой черты и т.д.), Но он всегда отображает только половину строки кода вместо переменной. Я знаю, что это что-то простое, но я потратил слишком много времени на то, чтобы возиться с этим безрезультатно.

Комментарии:

1. foreach $brandList as $item недопустимо

2. Вам нужно использовать правильный синтаксис для foreach php.net/manual/en/control-structures.foreach.php

3. Вы также можете где-нибудь запустить / открыть закрытие </li>

4. Вы уверены, что ваша страница анализируется PHP ?! У вас есть веб-сервер, работающий с включенным PHP? Это ваше расширение файла .php ?

5. .html файлы обычно не анализируются PHP, переименуйте его в .php и повторите попытку, код выглядит нормально

Ответ №1:

Один из способов сделать это — позволить 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>
 

Ответ №2:

В вашем фрагменте многое не так, и, честно говоря, я не удивлен, что он не работает.

  1. Вы используете неправильный синтаксис в своем foreach цикле.
  2. В <li></li> создаваемом вами файле нет открывающего тега , только тег привязки <a></a> и закрывающий тег элемента списка </li> .
  3. $test это переменная с кавычками в ней, использование кавычек вокруг нее во echo время просто неправильно, так как " in your 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>
 

Комментарии:

1. Ваш 3. не проблема. Добавление / сохранение «n» также приведет к исправлению исходного кода, а не только к отображению HTML

Ответ №3:

Привет, я думаю, вы пропустили запуск тега 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);
?>