If в PHP

Unlock
На сайте с 01.08.2004
Offline
786
556

Ситуация. Есть сайт с несколько К страниц. На части из них надо проставить ссылки на другие сайты. Мне подсказали такой вариант:

if in_array($id, range(0,100)) echo '...';

elseif in_array($id, range(532, 638)) echo '...';
elseif in_array($id, range(..., ...)) echo '...';

Но человек который дал код сказал, что должен быть более элегантный вариант, но в тот момент он был не в состоянии выдать его (спрашивал сразу после НГ :laugh:)

Есть варианты лучше или этот вполне подходящий?

Есть желание, - тысяча способов; нет желания, - тысяча поводов! /Петр-I/.
Alex91
На сайте с 30.12.2007
Offline
258
#1
C Уважением, Алексей
malls
На сайте с 08.08.2005
Offline
255
#2

тьфу - потер...

Unlock
На сайте с 01.08.2004
Offline
786
#3

Alex91, прочитал, но не понял как это поможет в моей ситуации.

malls, зря потерли :) switch видимо можно использовать, только я не знаю как. Я не программист не разу :(

malls
На сайте с 08.08.2005
Offline
255
#4
Unlock:
Alex91, прочитал, но не понял как это поможет в моей ситуации.
malls, зря потерли :) switch видимо можно использовать, только я не знаю как. Я не программист не разу :(

Вот так вот примерно:

switch ($id) {

case ($id < 100):
echo " ... "; break;
case ($id < 200): // сюда пойдет все что больше 100 но меньше 200;
echo " ... "; break;
default:
echo "hello"; break;
}
edogs software
На сайте с 15.12.2005
Offline
775
#5
Unlock:
Ситуация. Есть сайт с несколько К страниц. На части из них надо проставить ссылки на другие сайты. Мне подсказали такой вариант:
if in_array($id, range(0,100)) echo '...';

elseif in_array($id, range(532, 638)) echo '...';
elseif in_array($id, range(..., ...)) echo '...';

Но человек который дал код сказал, что должен быть более элегантный вариант, но в тот момент он был не в состоянии выдать его (спрашивал сразу после НГ 😆)
Есть варианты лучше или этот вполне подходящий?

Код-то в принципе подходящий, но зачем там in_array?


if($id>=0 && $id<=100) echo '1';
elseif($id>=532 && $id<=638) echo '2';

и так далее.

"Эстеты" могут написать


echo ( $id>=0 && $id<=100 ? '1': ($id>=532 && $id<=638 ? '2': '3' ) )

P.S.: switch тут конечно можно использовать, но мы бы не стали и уж по крайней мере не так:) В документации написано "and execute a different piece of code depending on which value it equals to". То есть речь именно о вычисляемом значении.

Т.е. хотя штука с условиями в case и работает, тем не менее мы бы не стали увлекаться недокументированными возможностями, хотя бы из-за того что


$a=0;
switch($a) {
case ($a < 100):echo 1;break;
case ($a > 100):echo 2;break;
}

выведет цифру 2

Потому что $a==($a>100) есть true в таком варианте. Ибо происходят именно сравнения того, что в $switch с тем что в условиях. Тогда уж правильнее писать так


$a=0;
switch(true) {
case ($a < 100):echo 1;break;
case ($a > 100):echo 2;break;
}

по понятным причинам.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
malls
На сайте с 08.08.2005
Offline
255
#6
edogs:
Т.е. хотя штука с условиями в case и работает, тем не менее мы бы не стали увлекаться недокументированными возможностями

Я потому сначала и потер. :)

ЗЫ: У Вас опасная мания раздвоения личности! 😂

Может оно и прикольно конечно: edogs = Olga & Sergey (2 people from 1 account).

но читать посты при этом категорически неприятно. Так что если Olga & Sergey люди в принципе вежливые - я бы перестал измываться над людьми. (Надеюсь кнопки на клаве когда посты пишите Вы не по очереди нажимаете?)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий