if ($a == 1)
{
$b=2;
$c=3;
$d=4;
}
if ($a != 1)
{
$b=0;
....
}
Один иф или несколько
в каком виде лучше и быстрее?
Код:
или
Код:
$b = $a != 1 ? 0 : 2;
$c = $a != 1 ? 1 : 3;
...
$c = $a != 1 ? 1 : 3;
...
Если первый вариант, то код в 2 раза больше
Если второй вариант, то куча if - а это зло.
Как php будет обрабатывать в 1м варианте, если $a==0 то он просто обойдет первый блок, или всеравно на него время тратить будет?
Вопрос именно в том, что в первом варианте, как я понимаю, он обработает один иф, и обойдет блок не обрабатывая его, а во втором он будет каждую строку с ифом обрабатывать, даже если в данный момент она не нужна...
а быстрее будет, как товарищ arjj заметил, if-else, то бишь в вашем случае
Код:
if ($a == 1) {
$b=2;
$c=3;
$d=4;
} else {
$b=0;
....
}
$b=2;
$c=3;
$d=4;
} else {
$b=0;
....
}
иначе в вашем случае в иф он не зайдёт (внутрь) то проверять будет оба, что в принципе очевидно.. здесь же проверит один раз
строка второго случая раскручивается по приоритету, сначала ?:, потом =, но да, каждая строчка будет обрабатываться...\
можете ещё так написать:
Код:
($a == 1) ? ( ($b=2) && ($c=3) && ($d=4)) : ($b=$c=$d=0);
тоже отработает один раз по условию входа, но читаемости коду не прибавит))
А по поводу скорости - это экономия на спичках.
Код:
switch($a) {
case '1': $b=0... ;break;
default: $b=2;$c=3;$d=4;
}
case '1': $b=0... ;break;
default: $b=2;$c=3;$d=4;
}
Объясните, как обходится свитч??? можно ли съэкономить? )
остановился на втором, т.к. в моем случае таких если А делаем B штук пять на 150 строк, а если переводить в первый вариант, то строк все 300, но при этом править код по надобности приходится в обеих частях. вот.