程序陈述php哪一个是最好的

时间:2016-06-22 21:16:04

标签: php if-statement procedural

我对程序性php有疑问。以下是两个例子:

示例1

if( $test['rank'] > 1 && $text == 'test' || $test['admin'] == 1 && $text == 'test'){

示例2

if( $text == 'test' && ( $test['rank'] > 1 || $test['admin'] == 1 ) ){

即使两种方式似乎都有效,除了它们的编写方式之外还有什么区别吗?

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 ) ) {

多田!