【问题标题】:php can log but not echo inside foreachphp可以记录但不能在foreach中回显
【发布时间】:2020-02-09 10:16:15
【问题描述】:

我有一个遍历对象数组的 foreach 循环。目标是将数据从数组中的每个对象输出到表格单元格。我一直在 HTML 和 PHP 之间来回切换,但是这个不会输出到浏览器。在循环内部,我可以对对象进行 error_log,但我可以直接使用 echo 语句或关闭 PHP 来编写 HTML,但它们都不会被打印出来。

有趣的是,这实际上是在另一个 foreach 循环中,它以完全相同的方式编写并且工作正常!

编辑:好的,我已经尽可能地简化了代码。 error_log 行将“here”写入错误日志。下一行不会向浏览器回显“这里”!

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

结果:只有包装 &lt;div class='grid-x'&gt;&lt;/div&gt; 被打印到 浏览器。里面什么都没有,虽然代码肯定在迭代 2 个对象和控制台记录“这里”两次。

我尝试过的事情:

  1. 摆脱包装&lt;div&gt;
  2. $form-&gt;awards 存储在数组变量中并对其进行迭代
  3. 擦除并重新输入整个&lt;td&gt;
  4. 从其他可以正常工作的代码中复制 foreach 行。
  5. echo 与关闭 php ?&gt; 并使用 HTML。
  6. 删除 error_log 行
  7. 为了这篇文章,我删除了检查$form-&gt;awards 是否存在的行。我知道在这种情况下确实如此。
  8. echo('here') 和 echo 'here';

【问题讨论】:

  • 根据文档echo 不是函数,而是不需要打开和关闭括号的语言结构。我会尝试删除它们开始...
  • @MarkusSafar 他们没有受伤。它们被视为优先运算符。
  • 不要用分号关闭 foreach 块。 &lt;?php }; ?&gt; 应该是 &lt;?php } ?&gt;
  • @Dharman,我同意,但文档明确指出:...不像函数,所以它不能总是在函数的上下文中使用。
  • 另外,如果您完全删除selog() 行,它是否有效?

标签: php foreach echo


【解决方案1】:

我花了太多时间查看代码!

所以我在屏幕上有 2 个手风琴标签,每个标签里面都有一个表格。我正在查看错误的手风琴,因此没有看到输出被发送到浏览器。

很难相信我为此花了几个小时,但我很高兴知道我没有疯,而且答案很简单。

感谢所有试图提供帮助的人。

我会投票删除这篇文章。

【讨论】:

    【解决方案2】:

    其实echo是没有功能的,所以需要换行:

            echo ('here');
    

            echo 'here';
    

    是的,如果你想使用函数来打印一些东西,那么你可以使用print('Here')

    【讨论】:

    • 试过这个。没有什么不同。我知道,我想不通。 . .这个答案也没有解释为什么 HTML 不能在 标签之外打印。
    猜你喜欢
    • 2013-10-02
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2015-07-21
    相关资源
    最近更新 更多