- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Когда нам нужно сравнить просто две переменные, вроде бы ничего сложного...
if ($a > 5) ...
А вот если необходимо проверить несколько переменных, при этом некоторые переменные должны обязательно иметь определенное значение, а некоторым разрешается иметь несколько разных значений. Как лучше это записать? В каком виде?
Вот к примеру, небольшо пример.
Необходимо проверить переменную $myid, она всегда должна равняться 12, при этом переменная $mystatus может быть равна нулю или, например, 5.
Как лучше записать такой код, с учетом того, что может быть несколько переменных, которые нужно проверить и все они могут иметь значения ИЛИ? А если $mystatus может иметь значения: 5, 7 и другие.
Стоит ли предварительно создавать массивы с возможными значениями и потом в условие проверять значение переменной на наличие его в массиве?
Вопрос с точки зрения удобоваримости кода. Не хочется быть говнокодером.
Не совсем понял суть вопроса, тем не менее, можно записывать так:
if ($myid == 12 || $mystatus == 0 || $var1 == 0 || $var2 == 0)
{
...
}
Условие выполняется, если
$myid == 12 И
$mystatus == 0 ИЛИ $mystatus = 5 И
$var1 == 0 ИЛИ $var1 == 4 И
$var2 == 0 ИЛИ $var2 = 7
А если условие будет выполняться, когда $var1 и $var2 могут быть равны и 0 и 4 и 7 и 8.
Это ж целый забор из палок получится, а не код
Условие выполняется, если
$myid == 12 И
$mystatus == 0 ИЛИ $mystatus = 5 И
$var1 == 0 ИЛИ $var1 == 4 И
$var2 == 0 ИЛИ $var2 = 7
А если условие будет выполняться, когда $var1 и $var2 могут быть равны и 0 и 4 и 7 и 8.
Это ж целый забор из палок получится, а не код
можете так попробовать
if (in_array($mystatus, array(0,4,7,8)) && $myid=12) {}
или так побыстрее
if (strpos(',0,4,7,8,', ','.$mystatus.',')!==FALSE && $myid=12)) {}
В данном случае за основами лучше всего обратиться к мануалу http://ru2.php.net/manual/en/language.control-structures.php
Но хочу предупредить для не допущения ошибок в дальнем - блок проверяется слева направо и заканчивается при получении верного или неверного условия, например:
здесь при $а равном 5 значение $b проверяться не будет. На что это может повлиять, например у Вас такая конструкция
здесь при $a отличном от 5 значение $b не вычисляетсяВопрос с точки зрения удобоваримости кода. Не хочется быть говнокодером.
С точки зрения читабельности и понятности, лучше проверять на несоотвествие все условия по-очереди, и как только найдено несоответствующее - выходить из функции. Пример:
таким образом вы получите несколько проверок подряд, которые гораздо проще раскурить нежели вложенные if'ы, или, упаси бог, else
С точки зрения читабельности и понятности, лучше проверять на несоотвествие все условия по-очереди, и как только найдено несоответствующее - выходить из функции.
если бы игры в подобном стиле программировались, вы до сих пор бы смотрели слайдшоу из-за потери производительности
Да мне как программисту глубоко на это наплевать.
Чем быстрее работает, тем лучше.
если бы игры в подобном стиле программировались, вы до сих пор бы смотрели слайдшоу из-за потери производительности
ага, т.е. if..elseif...else работает на порядки быстрее? ))
Megazoid добавил 07.02.2010 в 18:21
Да мне как программисту глубоко на это наплевать.
Чем быстрее работает, тем лучше.
ну если вы пишите программу дома для себя, то на здоровье
а вот когда встанет вопрос коллективной работы над одним кодом, вот тогда и поматеритесь ))
ага, т.е. if..elseif...else работает на порядки быстрее? ))
иногда и на несколько порядков, ведь по-вашему стилю, процессору придется отрабатывать на каждом IF не только лишние сравнения простых типов, но и лишние вызовы функций, каждая из которых может быть "тяжелой"