这更像是一个民意调查而不是一个问题,因此,没有一个答案是正确的。
但是,一般来说,如果您的if 是否定的,或者很容易写成对应if 的else case(如if ($v == 10) {} else {/*...*/}),我会选择continue。因此,如果我想为$v 运行所有案例,除了少数例外,我会在开始时过滤这些例外并为它们执行continue。
所以,我更喜欢:
foreach ($k as $v) {
if($v == 10) {
continue;
}
// code ...
}
这样做的原因是,当出现更多异常时,可以像这样轻松添加。
foreach ($k as $v) {
if($v == 10 || $v == 29) {
continue;
}
if($v = 12) {
continue;
}
// ... code
}
当然,这也可以通过
if ($v != 10 && $v != 29 && $v != 12) {
// ... code
}
但是这个if 不能被分割成多个条件,随着时间增加越来越多的例外情况,这些条件会迅速变得比理想情况更复杂,难以阅读和理解。
以这个例子为例。你认为哪个更清晰,更不容易掌握?
foreach ($k as $i => $v) {
if ($i = 8) { continue; }
if ($i % 3) { continue; }
if ($v['foo'] == 'bar') { continue; }
if ($v['bar'] == 'foo') { continue; }
if ($v['foobar'] == 10) { continue; }
if ($v['value'] < 0 || $v['value'] > 100) { continue; }
// else, do code...
}
或者……
foreach ($k as $i => $v) {
if ($i != 8 && !($i & 3) && $v['foo'] != 'bar' && $v['bar'] != 'foo' && $v['foobar'] != 10 && $v['value'] >= 0 && $v['value'] <= 100) {
// do code ...
}
}
另外,我发现否定更难理解(如果不等于 10 就这样做比如果等于 10 就跳过更容易出现心理失误)。
作为旁注,如果您在多文化环境中编码,您可能还必须考虑相同的文化和语言在其语言中没有本地否定,因此否定的概念本身就是一个外来特征即使是经验丰富的程序员有时也会在快速浏览代码时错过。不过,这可能是您需要考虑的事情,也可能不是。