Что было бы быстрее и какой правильный php внутри if и целых чисел?

#php #if-statement #while-loop

#php #if-statement #цикл while

Вопрос:

У меня есть 2 цикла while в операторе if then else if, код работает, и все хорошо, но есть небольшой вопрос.

Возьмем мой первый пример, я объявляю в цикле while оператор true для его выполнения,

 if ($levelChange > 0) {
    while ($levelChange != 0) {
        echo '<p>You gained a level you are now ' . ($levelChange   $user['level']) . '</p>';
        $levelChange--;
    }
}
elseif ($levelChange < 0) {
    while ($levelChange != 0) {
        echo '<p>You just lost a level you are now ' . ($levelChange   $user['level']) . '</p>';
        $levelChange  ;
    }
}
 

И мой второй пример, который я не,

 if ($levelChange > 0) {
    while ($levelChange) {
        echo '<p>You gained a level you are now ' . ($levelChange   $user['level']) . '</p>';
        $levelChange--;
    }
}
elseif ($levelChange < 0) {
    while ($levelChange) {
        echo '<p>You just lost a level you are now ' . ($levelChange   $user['level']) . '</p>';
        $levelChange  ;
    }
}
 

Они оба работают, но какой из них лучше использовать и почему, также, если кто-нибудь знает, что может быть быстрее, пожалуйста, просветите меня,

Спасибо

Ответ №1:

PHP преобразует свои аргументы в логические значения, где ожидается условный оператор. Для чисел каждое ненулевое значение ( != 0 ) оценивается как true . В документах PHP для логического типа есть таблица с правилами преобразования для разных типов.

Следовательно, if($x) эквивалентно if($x == TRUE) . Между этими двумя формами нет никакой (измеримой) разницы в производительности.

Комментарии:

1. значит, ноль в php всегда будет false, а любое положительное или отрицательное число будет true?

2. @cgweb87: да, точно. Любое ненулевое число считается истинным.

3. Хорошо, теперь я понимаю, спасибо, тогда я просто использую свои личные предпочтения, еще раз спасибо!

Ответ №2:

В этом случае я бы сказал, что это ваши предпочтения. Я бы, вероятно, использовал сравнение с 0, но это только мое предпочтение, потому что оно немного более подробное для кого-то другого, читающего ваш код. В любом случае производительность не должна сильно меняться.