打破; vs继续; vs return;

Joa*_*ter 26 php loops

我从hotscripts.com下载了一个用PHP编写的免费通讯

我更新了一些代码来添加新功能,我看到了一些我不理解的东西.

在代码中我看到:

foreach() { ...
 if() ...
  break;
 elseif() ...
  continue;
}
Run Code Online (Sandbox Code Playgroud)

我也看到了:

function() {
// ...
for($nl = 0; ...
 if() ...
  return true;
}
Run Code Online (Sandbox Code Playgroud)

我读过这break;将停止循环,continue将跳过循环到下一次迭代并return退出该函数.

我不明白为什么编码那种风格?为什么不使用类似的东西:

function() {
// ...
 for($nl = 0; ...
  if() ...
   $returnValue = true;
  else {
   $returnValue = false;
  }
 }
 return $returnValue;
}
Run Code Online (Sandbox Code Playgroud)

或者for循环中的相同想法?

Fil*_*efp 35

使用诸如break和之类的关键字continue可以使代码比您建议的更容易阅读.

特别是如果你将if/else-statements嵌套在一个以上的级别.

比较这篇文章中的片段,哪一个更容易阅读?它们都输出完全相同的东西,而且$Aarray (1,2,4,4,3,4).

一个return在一个循环(一个函数内)可以节省宝贵的CPU周期,如果你知道你不需要任何环路进一步,为什么这样做?


我太酷了,无法使用break/ continue..

$not_even_found = false;

foreach ($A as $v) {
  if ($v != 1) {
    if ($not_even_found) {
    } else if ($v % 2 != 0) {
      $not_even_found = true;
    } else {
      echo "$v\n";
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望有可读代码..

foreach ($A as $v) {
  if ($v == 1)
    continue;

  if ($v % 2 != 0)
    break;

  echo "$v\n";
}
Run Code Online (Sandbox Code Playgroud)

  • @NicolaPeluchetti大括号纯粹是一种风格偏好,我实际上更喜欢单个语句控件,如图所示它们被排除....不要用不必要的代码阻塞我的屏幕:) (2认同)

Nic*_*tti 13

您使用该样式进行编码,以便在第一次满足条件时保存不必要的循环,然后您现在已经确定某些内容并且您不需要进一步调查.

事实上,如果你回来,你停止循环.一个愚蠢的例子

function in_array($needle, $haystack){
   for($i = 0; $i < count($haystack); i++){
      if($needle === $haystack[$i]{
          return $i;
      }
   }
   return -1;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,当满足条件时,你返回一些东西(true,或者在这种情况下是计数器的值),因为你不需要在整个数组上使用iterato