У меня вопрос по процедурному 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, у вас есть это && оцениваться до ||, поэтому у вас есть:
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 ) ) {
тада!
Других решений пока нет …