在我正在研究的PHP项目中,我有一些类似的代码:
$allVarsTrue = TRUE;
if ($foo && $bar) {
for ($x=1;$x<=5;$x++) {
if (!somerandomtest($x)) {
$allVarsTrue = FALSE; // if $x fails the test, $allVarsTrue is set to false
}
}
} else { // if either $foo and $bar is false, $allVarsTrue is set to false
$allVarsTrue = FALSE;
}
if ($allVarsTrue) {
echo "True";
} else {
echo "False";
}
我想更简洁地写这个,就像这样
// This code does not work.
if ($foo &&
$bar &&
for ($x=1;$x<=5;$x++) {
somerandomtest($x);
}) {
echo "True";
} else {
echo "False";
}
如何更简洁地重写现有代码?
答案 0 :(得分:4)
一个选项是将循环移动到自己的函数中:
function performTests() {
for(…) { if(!test(…)) return FALSE; } # return early, no need to iterate over remaining items
return TRUE;
}
if($foo && $bar && performTests()) {
…
} else {
…
}
答案 1 :(得分:3)
将其包裹在一个函数中:
function testStuff($foo, $bar){
if (!$foo || !$bar) {
return FALSE;
}
for ($x=1;$x<=5;$x++) {
if (!somerandomtest($x)) {
return FALSE;
}
}
return TRUE;
}
然后:
if (testStuff($foo, $bar)) {
echo "True";
} else {
echo "False";
}
答案 2 :(得分:0)
你不能真的。但是,您可以在第一次测试失败后立即中断for循环
if ($foo && $bar) {
for ($x=1;$x<=5;$x++) {
if (!somerandomtest($x)) {
$allVarsTrue = FALSE; // if $x fails the test, $allVarsTrue is set to false
break; //no point in firther iterating
}
}
} else { // if either $foo and $bar is false, $allVarsTrue is set to false
$allVarsTrue = FALSE;
}