【发布时间】: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>
结果:只有包装
<div class='grid-x'></div>被打印到 浏览器。里面什么都没有,虽然代码肯定在迭代 2 个对象和控制台记录“这里”两次。
我尝试过的事情:
- 摆脱包装
<div> - 将
$form->awards存储在数组变量中并对其进行迭代 - 擦除并重新输入整个
<td> - 从其他可以正常工作的代码中复制 foreach 行。
-
echo与关闭 php?>并使用 HTML。 - 删除 error_log 行
- 为了这篇文章,我删除了检查
$form->awards是否存在的行。我知道在这种情况下确实如此。 - echo('here') 和 echo 'here';
【问题讨论】:
-
根据文档
echo不是函数,而是不需要打开和关闭括号的语言结构。我会尝试删除它们开始... -
@MarkusSafar 他们没有受伤。它们被视为优先运算符。
-
不要用分号关闭 foreach 块。
<?php }; ?>应该是<?php } ?> -
@Dharman,我同意,但文档明确指出:...不像函数,所以它不能总是在函数的上下文中使用。
-
另外,如果您完全删除
selog()行,它是否有效?