2013-04-30 75 views
1

我知道PHP使用懒惰评估/短路运营商。但说我想要评估所有表达式的条件,例如:如何评估条件中的所有表达式?

$a = "Apple"; 
$b = "Banana"; 
$c = "Cherry"; 

function check($fruit) { 
    if ($fruit != "Banana") { 
     echo "$fruit is good.\n"; 
     return true; 
    } else { 
     echo "$fruit is bad.\n"; 
     return false; 
    } 
} 

if (check($a) && check($b) && check($c)) { 
    echo "Yummy!\n"; 
} 

因为懒惰的评价,这样只会输出:

Apple is good. 
Banana is bad. 

比期望的输出,而:

Apple is good. 
Banana is bad. 
Cherry is good. 

这在表单验证中很有用。

所以我的问题:有没有什么办法来强制所有的表达式在PHP中进行评估,如果不是,在上面的例子中最好/最快的方式来获得所需的结果?

+0

怎么样美味!检查a,b或c也返回true? – 2013-04-30 01:46:17

+0

in check func,$ var更改为$ fruit – 2013-04-30 01:47:41

+0

@JOELEE Typo固定。感谢您指出了这一点。 – 2013-04-30 02:28:31

回答

0
function check($fruit) { 
    echo ($fruit != "Banana") ? "$fruit is good.\n" : "$fruit is bad.\n"; 
    return $fruit != "Banana"; 
} 


$a = "Apple"; 
$b = "Banana"; 
$c = "Cherry"; 
if (check($a) & check($b) & check($c)) { 
    echo "Yummy!\n"; 
} 


/* 
Apple is good. 
Banana is bad. 
Cherry is good. 
*/ 


$a = "Apple"; 
$b = "apple"; 
$c = "Cherry"; 
if (check($a) & check($b) & check($c)) { 
    echo "Yummy!\n"; 
} 


/* 
Apple is good. 
apple is good. 
Cherry is good. 
Yummy! 
*/