我对程序性php有疑问。以下是两个例子:
示例1
if( $test['rank'] > 1 && $text == 'test' || $test['admin'] == 1 && $text == 'test'){
示例2
if( $text == 'test' && ( $test['rank'] > 1 || $test['admin'] == 1 ) ){
即使两种方式似乎都有效,除了它们的编写方式之外还有什么区别吗?
答案 0 :(得分:1)
不,没有区别,因为第一个因为缺少括号而难以阅读。
因为>并且==在&&之前得到评估和||,你可以用这种方式编写代码:
hs.Iterator()
如果你查看PHP operators precedence,那就有&&在||之前得到评估,所以你有:
$p = $test['rank'] > 1;
$q = $text == 'test';
$r = $test['admin'] == 1;
if( $p && $q || $r && $q ) {
所以...... $ q必须在两个表达式中都满足,使它等同于:
if( ( $p && $q ) || ( $r && $q ) ) {
相当于:
if( $q ) {
if( $p || $r ) {
取代$ p,$ q和$ r你终于得到:
if( $q && ( $p || $r ) ) {
多田!