Условный оператор в PHP
Об условном операторе я уже писал, когда говорил о JavaScript. Разумеется, в PHP также этот оператор существует, и, разумеется, он является наиважнейшим оператором как и, пожалуй, в большинстве языков программирования. И об условном операторе в PHP я и поведаю в этой статье.
Синтаксис условного оператора в PHP такой:
if (условие) {
//Блок операторов
}
else {
//Блок операторов
}
Как видите, синтаксис точно такой же, как и в JavaScript. И вообще этот синтаксис переходит от языка к языку, и он очень удобен, прост и понятен. Однако, если PHP - это Ваш первый язык, то поясняю. Вначале идёт ключевое слово "if", дальше в круглых скобках задаётся условие (результат которого, разумеется, либо true - истина, либо false - ложь). После условия идут фигурные скобки, в которых идёт блок операторов. И, наконец, необязательный блок else, который будет выполнен, если условие будет ложным (то есть вернёт false). Давайте разберём простейший пример на условный оператор:
<?php
$x = 4;
if ($x > 0)
echo "Число X положительное";
else
if ($x == 0)
echo "Число X равно нулю";
else
echo "Число X отрицательное";
?>
Давайте разберём эту простую задачу. Вначале скрипта объявляется переменная x и присваивается значение "4". Затем идёт условие, где мы "если переменная x больше нуля" выводим сообщение, иначе (то есть если переменная x НЕ больше нуля) если переменная x равно 0, то выводим сообщение, что "Число X равно нулю", иначе выводим, что число отрицательное. В общем, я постарался максимально подробно изложить алгоритм этой задачи. Надеюсь, Вы поняли принцип. Возможно, что некоторые из Вас спросят: "А куда делись фигурные скобки?" В данном случае они необязательны, потому что мы используем в каждом блоке всего один оператор (либо один оператор echo, либо один оператор IF). А вот если бы мы использовали два и более оператора, то нам пришлось бы уже ставить фигурные скобки.
И давайте ещё один пример рассмотрим, а, заодно, я познакомлю Вас с очень важной функцией в PHP - isset(), которая проверяет существование переменной и возвращает true, если переменная существует, либо false, если переменная не существует.
<?php
$v = "some";
if (isset($v))
echo "Переменная v существует и её значение - $v";
else
echo "Переменной v не существует.";
if (isset($abcdef)) {
echo "Такая переменная существует!";
echo "Странно... Ведь мы её не объявляли";
}
else
echo "Данной переменной не существует...";
?>
В этом примере мы вновь объявили переменную со строковым значением "some". Дальше мы проверяем, если такая переменная существует (функция isset()), то сообщаем об этом, а если не существует (то есть функция isset() вернула false), то выводим другое сообщение. Дальше мы пишем ещё один условный оператор, в котором проверяем существование переменной abcdef. Также обратите внимание, что я поставил фигурные скобки, так как в блоке уже два оператора (два echo). Также обратите внимание, что если Вы используете двойные кавычки ("), то такие строки "значение - $v" превращаются в "значение - some", то есть подставляется значение переменной. А если Вы используете одинарные кавычки ('), то значение переменной не подставляется.
Также бывают сложные условия: с логическим И (&&) и/или логическим ИЛИ (||):
<?php
$ab = 17;
$cd = 19;
$bool = true;
if (($ab - $cd < 0) && ($bool))
echo "Разница переменных меньше нуля и переменная bool = true";
?>
Разумеется, могут быть очень сложные условия с кучей логических И и логических ИЛИ. В общем, думаю, этот пример не нуждается в пояснении. Главное надо понять, что оператор с логическим И вернёт в итоге true только тогда, когда все условия истинны, а если используется логическое ИЛИ, то чтобы вернулось true, необходимо выполнение хотя бы одного из условий. Но и тут важно понимать, что бывают, например, такие условия:
if ((($a > 0) && ($b < 0)) || ($c == 0))
То есть здесь условие вернёт true, если (($a > 0) И ($b <0)) ИЛИ ($c == 0). В общем, надо научиться читать условия, и обращайте внимание на расстановку скобок, так как именно они задают приоритеты выполнения операций. Советую Вам с последним условием поработать. Напишите простой скрипт, присвойте трём переменным значения и посмотрите, что возвращает данное условие. Потом меняйте значениях переменных и следите за изменениями. Так Вы быстрее получите навык чтения сложных условий, а они, поверьте мне, используются очень часто не только в PHP, но и в других языках программирования.
-
- Михаил Русаков
Комментарии (22):
Михайл, могу ли я вместо && и || писать более привычное мне "and" и "or" в условии и будет это одно и тоже?
Ответить
Большой разницы нет. Единственное, что у "&&" приоритет выше, поэтому сначала будет выполняться "&&", а потом только "and". Та же история и с "||" и "or".
Ответить
А есть ли какая-нибудь разница между if (isset($v)) и просто if ($v)?
Ответить
Да, разница огромная. isset() проверяет существует ли такая переменная. Если, допустим, она имеет значение false, то isset() вернёт true и условие пройдёт. А если if($v) и переменная v=false, то тогда условие не пройдёт.
Ответить
Здравствуйте. В кодах 3 и 4 с верху, как мне кажется и моему денверу, есть ошибка.
Ответить
Я нашёл только одну ошибку: if (($ab - $cd < 0) && (bool)) Подправил. Других ошибок там нет. Если Вы про последний код, то там нет цели "конечный вариант", а показывается только пример if. Спасибо, что сообщили!
Ответить
Это вам спасибо!))
Ответить
А почему например тут: if ($x == 0) стоит 2 знака = ???
Ответить
Потому что это знак сравнения, а не присваивания.
Ответить
А не проще условия if ((($a > 0) && ($b < 0)) || ($c == 0)) написать вот так: if ($a > 0 && $b < 0 || $c == 0) результат вывода будет такой же...
Ответить
Не проще, поскольку тогда создаётся возможность для ошибки из-за приоритетов операций. Поэтому любой программист Вам скажет, что лучше на приоритеты не надеяться и перестраховаться, поставив скобки. Если Вам проще писать так, то, пожалуйста, можно и без лишних скобок писать. А ошибки будете по ходу исправлять.
Ответить
понятно.. просто мне это не объяснили...
Ответить
Спасибо я сделал на сайте так <img src="avatars/avatar <?php if ($_COOKIE["avatar"]=="") { echo "default"; } else { echo $_COOKIE["avatar"]; } ?> .jpg"> и всё работает нормально!
Ответить
Здесь мне помогли знания о языке Pascal.Кто знает Pascal, может легко учить этот.
Ответить
<?php $x = 4; if ($x > 0) echo "Число X положительное"; else if ($x == 0) echo "Число X равно нулю"; else echo "Число X отрицательное"; ?> Вот здесь ошибка у Вас. Скобок нету после условия.
Ответить
Никаких ошибок нет. Прежде чем писать, лучше проверьте, работает он или нет. И только если не работает, тогда и сообщать, высказывая свои предположения.
Ответить
а разница какая <?php $ab = 17; $cd = 19; $bool = true; if (($ab - $cd < 0) && ($bool)) echo "Разница переменных меньше нуля и переменная bool = true"; ?> и без && ($bool) тож самое получается ?
Ответить
короч понял все спасиб за сайт !
Ответить
Да, получается, однако, это пример использования && и булевской переменной в if.
Ответить
((($a > 0) && ($b < 0)) || ($c == 0)) ((($a > 0)-Зачем вы здесь три скобки поставили вполне двух хватает... if(($x<$y) &&($r<$x) ||($x==0)) я вот так сделал...это не хуже?
Ответить
Дело не в том, что хуже, так менее наглядно.
Ответить
В каждой переменной abcdf в строчке echo, в значении нужно вписывать строку </ br>. Т.к при выводе они будут сливаться с первым выводом.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.