程序语句 php 哪个最好

procedural statement php which one is the best

我有一个关于程序的问题 php。这里有两个例子:

示例 1

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

示例 2

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

即使这两种方式似乎都有效,除了它们的书写方式之外还有什么不同吗?

不,除了第一个由于缺少括号而更难阅读之外没有区别。

因为 > 和 == 在 && 和 || 之前被评估,你可以这样写你的代码:

$p = $test['rank'] > 1;
$q = $text == 'test';
$r = $test['admin'] == 1;

if( $p && $q || $r && $q ) {

如果您检查 PHP operators precedence,您会在 || 之前对 && 进行求值,因此您有:

if( ( $p && $q ) || ( $r && $q ) ) {

所以... $q 必须在两个表达式中都满足,使其等效于:

if( $q ) {
    if( $p || $r ) {

相当于:

if( $q && ( $p || $r ) ) {

替换 $p、$q 和 $r 你最终得到:

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

多田!