PHP может войти, но не эхо внутри foreach - PullRequest
0 голосов
/ 12 октября 2019

У меня есть цикл foreach, перебирающий массив объектов. Цель состоит в том, чтобы выводить данные в ячейку таблицы из каждого объекта в массиве. Я все время перехожу между HTML и PHP, но этот не выводится в браузер. Внутри цикла я могу error_log объекта, но я могу следовать непосредственно с помощью выражения echo ИЛИ закрывать PHP для написания HTML, и ни один из них не будет напечатан.

Самое смешное, что это на самом деле внутри другого цикла foreachэто написано точно так же и прекрасно работает!

Редактировать: ОК, я максимально упростил код. Строка error_log записывает «здесь» в журнал ошибок. Следующая строка не отображает «здесь» в браузере!

<div class='grid-x'>
    <?php
        foreach($form->awards as $award) {
            error_log('here');
            echo 'here';
        }
    ?>
</div>

РЕЗУЛЬТАТ: в браузер выводится только упаковка <div class='grid-x'></div>. Ничего внутри, хотя код определенно перебирает 2 объекта и ведёт логирование консоли «здесь» два раза.

То, что я пробовал:

  1. Избавление отобертывание <div>
  2. Сохранение $form->awards в переменной массива и повторение по нему
  3. Стирание и повторный набор всего <td>
  4. Копирование строки foreach из другого кода, гдевсе работает нормально.
  5. echo против закрытия php ?> и использования HTML.
  6. Удаление строки error_log
  7. Ради этого поста я удалил проверку строкиесли $form->awards существует. Я знаю, что в этом случае это так.
  8. И эхо («здесь») И эхо «здесь»;

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

Я провожу слишком много часов, просматривая код!

Так что у меня на экране две вкладки для аккордеона со столом внутри каждого. Я искал не тот аккордеон и поэтому не видел, чтобы вывод был отправлен в браузер.

Трудно поверить, что я потратил пару часов на это, но я рад, что несумасшедший, и это был простой ответ.

Спасибо всем, кто пытался помочь.

Я буду голосовать, чтобы удалить это сообщение.

0 голосов
/ 12 октября 2019

На самом деле echo не является функцией, поэтому вам нужно заменить строку:

        echo ('here');

на

        echo 'here';

yes, если вы хотите использовать функцию для печатитогда вы можете использовать print('Here')

...