手続き型phpについて質問があります。以下に 2 つの例を示します。
例 1
if( $test['rank'] > 1 && $text == 'test' || $test['admin'] == 1 && $text == 'test'){
例 2
if( $text == 'test' && ( $test['rank'] > 1 || $test['admin'] == 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 ) ){
両方とも機能しているように見えても、書き方以外に違いはありますか?
いいえ、違いはありませんが、最初のものは括弧がないために読みにくいです。
> と == は && と || の前に評価されるため、次のようにコードを記述できます。
$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 ) ) {
多田!