我更新了一些代码以添加新功能,我看到了一些我不理解的东西。
在我看到的代码中:
foreach() { ...
if() ...
break;
elseif() ...
continue;
}
我也看到了:
function() {
// ...
for($nl = 0; ...
if() ...
return true;
}
我读到break;
将停止循环,continue
将跳过循环到下一次迭代,return
将退出该函数。
我不明白为什么编码那种风格?为什么不使用类似的东西:
function() {
// ...
for($nl = 0; ...
if() ...
$returnValue = true;
else {
$returnValue = false;
}
}
return $returnValue;
}
或for循环中的相同想法?
答案 0 :(得分:34)
使用break
和continue
等关键字可以使代码比您的建议更容易阅读。
特别是如果你将if / else-statements嵌套在一个以上的级别。
在这篇文章中进一步比较片段,哪一个更容易阅读?
它们都输出完全相同的内容,而$A
是array (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";
}
}
}
foreach ($A as $v) {
if ($v == 1)
continue;
if ($v % 2 != 0)
break;
echo "$v\n";
}
答案 1 :(得分:12)
您使用该样式编码,以便在第一次满足条件时保存不必要的循环,然后您现在已经确定某些内容,并且您不需要进一步调查。
事实上,如果你回来,你就停止了循环。一个愚蠢的例子
function in_array($needle, $haystack){
for($i = 0; $i < count($haystack); i++){
if($needle === $haystack[$i]{
return $i;
}
}
return -1;
}
在这种情况下,当满足条件时,你返回一些东西(true,或者在这种情况下是计数器的值),因为你不需要在整个数组上使用iterato
答案 2 :(得分:0)
一些“为什么”归结为个人偏好。其中一些归结为在返回之前是否需要在同一个函数中完成其他事情。如果没有其他事情需要做,并且该函数只是假设返回一个真或假的答案,那么直接使用return true;
是最方便的机制。如果你仍然需要做一些其他的东西,即使在决定是否返回true之后(例如关闭文件句柄),然后将响应分配给变量然后在结束时返回它可能是必要的。