-1

手続き型phpについて質問があります。以下に 2 つの例を示します。

例 1

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

例 2

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

両方とも機能しているように見えても、書き方以外に違いはありますか?

4

1 に答える 1

1

いいえ、違いはありませんが、最初のものは括弧がないために読みにくいです。

> と == は && と || の前に評価されるため、次のようにコードを記述できます。

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

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

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

多田!

于 2016-06-23T03:42:07.290 に答える