php - 处理开放且格式正确的 PHP 循环
问题描述
对 PHP 非常陌生,并且知道一点 HTML。
所有这些问题都源于作者的编码风格。这看起来很有趣,但是代码的工作方式似乎没有意义。
我不明白为什么作者建议
<?php ?>
为 html 中的每一行单独标记。这是最好的风格/编码实践吗?由于作者的风格,我无法理解为什么该行
<li><?php echo $product['name']; ?></li>
没有放入自己的 php 标签中。对我来说,“li”标签应该位于 php 标签内,然后回显出来......但是不,作者所做的工作正确地显示了内容。因为2,我去实验下面的代码。我在文本中添加了我认为只是我希望输出一次的纯文本,而不是通过 PHP 循环。但是不......即使文本不在 PHP 代码本身中,也会发生循环。
完全糊涂了。
非常感谢任何指导。
<?php
$products = [
['name' => 'shiny star', 'price' => 20],
['name' => 'green shell', 'price' => 10],
['name' => 'red shell', 'price' => 15],
['name' => 'gold coin', 'price' => 5],
['name' => 'lightning bolt', 'price' => 40],
['name' => 'banana skin', 'price' => 2],
];
?>
<... snip to show only body..>
<body>
<div class="">
<ul>
Not php section
<?php foreach($products as $product) { ?>
Should be plain text with no repeat. Inside First. Outside second.
<?php if ($product['price'] > 15) { ?>
<li><?php echo $product['name']; ?></li>
Should be plain text. Inside second.
<?php } ?>
<?php } ?>
</ul>
</div>
</body>
输出:
不是 php 部分应该是纯文本,没有重复。内第一。外二。闪亮的星星应该是纯文本。内二。应该是没有重复的纯文本。内第一。外二。应该是没有重复的纯文本。内第一。外二。应该是没有重复的纯文本。内第一。外二。应该是没有重复的纯文本。内第一。外二。闪电应该是纯文本。内二。应该是没有重复的纯文本。内第一。外二。
解决方案
我遵循的一般规则是只将 PHP 标记包装在尽可能小的东西周围。
因此,对于示例,不需要回显 HTML 标记,它只是需要它的变量和循环,所以我会采用类似的样式。
考虑它的一种方法是将 PHP 标记之外的文本视为隐式回显。
这可能更好地解释了为什么 3 号会绊倒你。“应该是没有重复的纯文本......”位于 foreach 循环的左大括号和右大括号之间,因此将被重复。
所以它相当于这样的事情,显然会重复:
<?php
foreach($products as $product) {
echo "Should be plain text with no repeat. Inside First. Outside second.";
// ... the rest
}
?>
正如@OsDev 在评论中提到的,当以这种方式使用 PHP 作为模板语言时,使用替代语法也很常见,这使得在没有正确缩进的情况下更容易阅读。(if/while/for/foreach/switch 都有替代的语法版本)
我还建议研究模板语言,例如Twig(Symfony 框架)和Blade(Laravel 框架),它们是在现代 PHP 中穿插 PHP 和标记的更现代方式
推荐阅读
- javascript - ReferenceError: $ 未定义 [jQuery 或 Bootstrap]
- swiftui - 如何在 tvOS 上使用 SwiftUI 在多个水平列表之间导航
- sql-server - 将 SQL Server 存储过程添加到实体框架模型的推荐方法是什么
- ios - 如何在Xcode swift中为ui标签使用if语句
- react-native - 安装 Appodeal 后如何修复“程序类型已存在:com.reactlibrary.BuildConfig”
- react-native - 如何在 Ionic React 应用程序中固定 SSL 证书
- flutter - 如何仅使用 PageView 显示下一张卡片的边缘
- grails - Json 文件解析 - Groovy
- sql - SQL 查询从当前日期每周显示日期
- javascript - 因此返回一个 JSX 必然会使函数成为一个组件?