процедурное утверждение php какой из них лучший

У меня вопрос по процедурному php. Вот два примера:

пример 1

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

пример 2

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

Даже если оба способа работают, есть ли разница, кроме того, как они написаны?

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

тада!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]