Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Один иф или несколько

396
05 января 2012 года
SibBear
223 / / 27.07.2006
Вопрос:

в каком виде лучше и быстрее?
Код:
if ($a == 1)
 {
   $b=2;
   $c=3;
   $d=4;
 }

if ($a != 1)
  {
    $b=0;
    ....
  }


или

 
Код:
$b = $a != 1 ? 0 : 2;
$c = $a != 1 ? 1 : 3;
...


Если первый вариант, то код в 2 раза больше
Если второй вариант, то куча if - а это зло.

Как php будет обрабатывать в 1м варианте, если $a==0 то он просто обойдет первый блок, или всеравно на него время тратить будет?
277
05 января 2012 года
arrjj
1.7K / / 26.01.2011
А конструкция if-else не устраивает? Есть еще if-elseif-else :)
Если много сравнений, то есть еще switch :D

Быстрее и лучше в первом варианте, т.к. второй равносилен следующей конструкции:
 
Код:
if($a != 1)
    $b = 0;
else
    $b = 2;

if($a != 1)
    $c = 1;
else
    $c = 3;
396
05 января 2012 года
SibBear
223 / / 27.07.2006
да конструкций то фигова туча, можно извращаться по полной, у курсе, плавали :)

Вопрос именно в том, что в первом варианте, как я понимаю, он обработает один иф, и обойдет блок не обрабатывая его, а во втором он будет каждую строку с ифом обрабатывать, даже если в данный момент она не нужна...
271
05 января 2012 года
MrXaK
721 / / 31.12.2002
если у вас там просто присваивания внутри ифов, то не беспокойтесь, разницы вы не почувствуете
а быстрее будет, как товарищ arjj заметил, if-else, то бишь в вашем случае
 
Код:
if ($a == 1) {
   $b=2;
   $c=3;
   $d=4;
 } else {
    $b=0;
    ....
  }

иначе в вашем случае в иф он не зайдёт (внутрь) то проверять будет оба, что в принципе очевидно.. здесь же проверит один раз

строка второго случая раскручивается по приоритету, сначала ?:, потом =, но да, каждая строчка будет обрабатываться...\

можете ещё так написать:
 
Код:
($a == 1) ? ( ($b=2) && ($c=3) && ($d=4)) : ($b=$c=$d=0);

тоже отработает один раз по условию входа, но читаемости коду не прибавит))
244
05 января 2012 года
UAS
2.0K / / 19.07.2006
По читабельности лучше первый вариант.
А по поводу скорости - это экономия на спичках.
369
06 января 2012 года
Kesano
451 / / 09.10.2007
Почему не рассмотрен вариант:
 
Код:
switch($a) {
case '1': $b=0... ;break;
default: $b=2;$c=3;$d=4;
}


Объясните, как обходится свитч??? можно ли съэкономить? )
396
06 января 2012 года
SibBear
223 / / 27.07.2006
Мой вывод, главное не мусорить, и писать читабельный код, а работает все с разницей сотые милисекунд, и в разных условиях то одно выигрывает, то другое :)
остановился на втором, т.к. в моем случае таких если А делаем B штук пять на 150 строк, а если переводить в первый вариант, то строк все 300, но при этом править код по надобности приходится в обеих частях. вот.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог