Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这两个foreach循环之间的区别是什么?_Php_Cakephp_Foreach - Fatal编程技术网

Php 这两个foreach循环之间的区别是什么?

Php 这两个foreach循环之间的区别是什么?,php,cakephp,foreach,Php,Cakephp,Foreach,我在cakephp中看到foreach循环是这样使用的 foreach($tags as $tag) : \\code here endforeach; 我曾经写过这种风格的foreach foreach($tags as $tag) { //code here } 这两个foeach循环之间有什么区别?哪一个更好,实现起来更有意义 谢谢,它们是一样的。我会使用带括号的,因为语法更像其他PHP构造,C,C++,java等等。< P>它们是等价的,但是第二个第一个在

我在cakephp中看到foreach循环是这样使用的


foreach($tags as $tag) :
       \\code here
endforeach;
我曾经写过这种风格的foreach


foreach($tags as $tag)
{
     //code here
}
这两个foeach循环之间有什么区别?哪一个更好,实现起来更有意义


谢谢,它们是一样的。我会使用带括号的,因为语法更像其他PHP构造,C,C++,java等等。

< P>它们是等价的,但是第二个第一个在PHP嵌入HTML时有时更可读。

它们是等价的,但是当PHP嵌入HTML时,第一个有时更可读。 :)~


就其平等性而言,任何方法都不能称之为“更好的”,只能作为协议的主体

第一个源于早期的PHP语法(在PHP4之前),第二个是现在普遍接受的语法。我想我会避免使用第一个,并且总是使用花括号,即使是像这样的东西

<?php foreach ($foo as $f) { ?>
<div><?= $f ?></div>
<?php } ?>


因为许多编辑器都有大括号突出显示,这样做更好:)

它们完全相同,因此最有可能使用第一个大括号,因为它允许用户释放大括号,所以在添加大部分其他代码或HTML设计时,您不需要记住大括号的位置以及打开的内容

与IF语句的备选方案一样:


它可以归结为个人或团队编码标准。我更喜欢{}选项,因为它使代码更具普遍可读性。诚然,它在HTML中会变得混乱,但使用编码标准,您可以轻松地做到这一点


如果循环中包含大量HTML和PHP,那么使用:选项会在代码的底层造成严重的混乱,尤其是当循环从页面底部运行时。用{}突出显示语法可以让您更容易地识别循环内容。

我想说,第一个在html中使用时可读性更强。php和html中的花括号在我看来不太合适。我同意——这正是我的初衷。:)事实上,第一个常用于WordPress模板。为了澄清,在CakePHP上下文中,您可能会决定视图和元素(扩展名为.ctp的)使用第一个表单和所有其他文件(即扩展名为.php的类)使用后者。有人知道这两种不同类型的语法的术语吗?我想这取决于它们在哪里被使用。在包含纯php代码的文件中,第二个大括号更有意义。如果在模板或视图中实现light逻辑,那么第二种方法的可读性要高得多。PHP 4之前的版本并没有那么古老;)你可以看到,在PHP3之前,语言中没有花括号:)……大约13年前
<?php
if ($foo):
   echo "is ok\n";
elseif ($bar):
   echo "not ok\n";
else:
   echo "dont't know\n";
endif;
?>