![]() |
Операторы языка PHP. |
Операторы (statements) составляют костяк приложения. Условные операторы и циклы дают программе возможность принимать решения, что необходимо для выполнения большинства вычислительных задач.
Условные операторы
Условные операторы позволяют определять блоки кода, которые выполня- ются только
при осуществлении некоторых условий. В РНР есть.две услов- ные конструкции.
Первая из них — это if ... elsei f ... else, позволя- ющая проверить несколько
выражений и выполнить операторы в соот- ветствии со значениями этих выражений.
Если нужно сравнить одно выра- жение с рядом значений, то РНР предоставляет
конструкцию switch
сазе, упрощающую эту операцию.
Оператор if
Оператор if является одной из наиболее важных возможностей, которая есть,
вероятно, в каждом языке программирования. Он позволяет выпол- нять выбранные
строки кода только при истинности некоторых заданный условий. Например:
// Canada будет выводиться, только если $country имеет значение "ca"
if ($country = = "са”) echo ("Canada");
Если при выполнении условия нужно выполнить несколько команд, то для обозначения строк, принадлежащих блоку if, используются фигурные скобки { }:
// Canada будет выводиться, только если $country имеет значение са
if ($country == "са") {
echo (" Canada”);
echo (" Ottawa");
}
Проверяемое условие (заключенное в скобки) должно иметь булево значение, т. е. true или false. Любое невыполненное условие, нуль, пустая строка (" "), неопределенная величина и встроенная константа false имеют значение false. Например, следующие выражения имеют значение false:
if (5 < 4) echo ("Это не будет выведено");
if (false) echo ("Это не будет выведено"); // false является
// встроенной константой
if ("0") echo ("Это не будет выведено");
// в результате
// преобразования строк
// "0" дает значение 0
if ($g) echo ("Это не будет выведено"); //'В предположении,
// что $g не установлена
Величина true эквивалентна любому значению, не являющемуся нулем или
пустой строкой, либо выполненному условию. Следующие выражения имеют значение
true:
if ("false") echo ("Это будет вывело"); ' // "false" имеет значение строки
if ("00") echo ("Это будет выведено");
// В данном контексте строка // из двух нулей не
// преобразуется в.int
if (О = = О) echo ("Это будет выведено");
// нуль равен нулю, поэтсиу
// выражение истинно
ЦИКЛЫ
Если бы не циклы, программирование было бы довольно скучной профессией. Цикл
является средством, позволяющим выполнять некоторый участок кода заданное число
раз или до тех пор, пока не будет выполнено некоторое условие. В РНР есть два
типа циклов: while и for. Циклы while проверяют условие до или после каждого
прохода цикла и повторяют цикл снова только в том случае, если условие истинно.
Число итераций цикла for уста- навливается перед первым проходом и не может быть
изменено.
Циклы while
Цикл while является простейшим из операторов цикла. Его синтаксис похож на
синтаксис оператора if:
while(условие)
{
// операторы
}
Цикл while вычисляет значение булева выражения. Если выражение равно false, то код внутри фигурных скобок пропускается. Если оно равно true, код в скобках выполняется. По достижении закрывающей скобки ) проверя- емое выражение вычисляется заново, и если его значение true, код в цикле выполняется повторно. Это продолжается до тех пор, пока выполняется ус- ловие. Обратите внимание, что условие проверяется только в начале каждой итерации, поэтому если истинность выражения изменится посредине выполнения блока кода, код будет выполнен до конца. Чтобы прервать выпол- нение в более ранний момент, можно воспользоваться оператором break:
$i = 11;
while (--$i) {
if (myfunction($i) = = "error") {
break; // Остановить цикл!
}
++$numbikes;
}
В данном примере, если гипотетическая функция my function не возвращает никаких ошибок, цикл будет выполнен десять раз и прекратится, когда $i станет равным нулю. (Напомним, что нуль дает значение «ложью») Если myfunction возвратит ошибку, выполнится оператор break и цикл закончится. Во многих случаях желательно завершить только текущий проход цикла, но не сам цикл. С этой целью используется оператор continue:
$i = 11;
while (--$i)
{
if (myfunction($i) == "error") (
continue; // перейти к следующей итерации цикла.
// Не инкр«ментировать $numbikes
}
++$numbikes;
}
Этот код тоже выполняется десять раз, если my function не возвратит ошибки. Однако на этот раз при возникновении ошибки выполнение перескаки- вает на следующую итерацию цикла без инкрементирования переменной счетчика $numbikes. Если при этом $i все еще больше нуля, выполнение цикла продолжится обычным образом.
Подобно оператору if оператор while имеет альтернативный синтаксис, который удобно использовать для встраивания блоков кода HTML:
<?php
$I = 0;
while ($I <= 5)
?>
<TR><TD><INPUT type=text></TD></TR>
<?php
++$i;
endwhile;
?>
Циклы do...while
Операторы do ... while аналогичны операторам while, но проверка условия происходит не в начале, а в конце каждой итерации. Это означает, что цикл всегда выполняется хотя бы один раз:
echo ("<SELECT name='num_parts'\n");
$i = 0;
do {
echo ("\t <OPTION value=$i>$i</OPIION>\n"); }
while (++$i < $totalparts);
echo ("</SELECT>\n");
В результате выполнения этого кода нуль всегда является вариантом выбора для элемента <SELECT>, даже если $totalparts равно нулю.
Операторы while и do ... while часто используются вместе с операторами инкрементирования и декрементирования для управления началом и завершением цикла, как в приведенных примерах. Используемые с этой целью переменные часто называют переменными управления циклом. Операторы while часто используются для чтения записей из запроса к базе данных, строк из файла и элементов массивов.
Операторы
Оператор используется для определения величины путем выполнения про- цедуры, или операции, над одной или более величинами. Величина, ис- пользуемая в операции, называется операндом. Сложение является одной из простейших операций. В выражении б + 2 операндами являются 6 и 2, а значение выражения равно 8. Операторы PHP в основном аналогичны опе- раторам С, Perl и других родственных языков.
Унарный оператор
Знак минус (-) также используется с отдельными числовыми величинами:,:,-. для
того, чтобы изменить их знак (т. е. сделать положительное число отри- ',
цательным, а отрицательное — положительным). Например:
$a = 2;
$b = -$a; // $Ь = -2
$c = -4;
М = -$c; // $d = 4
Оператор присваивания значения переменной
Как мы видели в главе 4, для установки значений переменным использует оператор
присваивания «=».
$x = 1;
$y = x + 1;
$length = $area / $width;
$description = "Bicycle helmet";
Переменной слева от знака «=» дается значение выражения, находящегося справа от знака «=». Важно не смешивать оператор присваивания «=» с оператором сравнения «= =».
Операторы сравнения
Операторы сравнения используются для проверки условия. Значением вы- ~"'.-„-',
ражения, использующего операторы сравнения, всегда является булева ве- личина,
т. е. true или false.
$i = 5;
if ($i < 6) echo ("Эта строка будет выведена."); // выражение '$i < б' имеет
значение 'true,'
И ($i > б) echo ("Эта строка не будет выведена.»)
|
|
|
|
||||
|
|
|
|
||||
|
|
|
|
||||
|
|
|
|
||||
|
|
|
|
||||
|
|
|
|
||||
|
|
|
|
||||
|
|
|
|
И снова напоминаем, что оператор сравнения записывается двумя знаками равенства (==), а один знак равенства (=) представляет оператор присваива- ния. Оператор присваивания используется для установки значения пере- менной, а оператор сравнения используется для определения или проверки значения переменной. Несоблюдение этого различия может привести к не- ожиданным результатам. Например, можно по ошибке написать:
?r
$I =4;
if ($I = 7) echo (" семь" ); // всегда вывсдится "семь'!
Это совершенно законная запись в РНР, поэтому сообщения об ошибке мы не получим. Однако данный оператор if не проверяет, равно ли значение $i семи. Вместо этого он присваивает значение 7 переменной $i, а затем вычисляет значение 7, которое не равно нулю, и, следовательно, является true. Поскольку сообщение об ошибке не выдается, данная ошибка может ока- заться трудно обнаружимой. Вообще, если вы сталкиваетесь с тем, что опе- ратор if независимо от условий постоянно дает значение true или false, велика вероятность того, что вместо «= =» вы случайно использовали «=». В приведенном ниже коде проблема решена:
$i = 4;
if (7 == $1) echo (" семь" );
// 7 == $1 имеет значение Fаlse, поэтому команда echo не выполняется
Оператор конкатенации строк
// Следующий код выводит "Phineas Phop"
$first = "Phineas";
$1ast = "Phop";у
$full = $first . " " . $1ast; // имя, пробел, фамилия
echo ($full);
// Следующий код выводит "Phop's Bicycles"
$1ast = "Phop";
echo ($1ast . "'s Bicycles");
Учтите, что оператор конкатенации не является единственным способом создания строк из данных, содержащихся в переменных. Как мы видели в главе 3, PHP автоматически интерполирует строковые переменные в строковых литералах, заключенных в двойные кавычки. Поэтому обе следующие строки выведут Phineas Phop:
echo ($first . " " . $1ast); // С использованием конкатенации
echo (“$first $last"); // С использованием интерполяции
Вторая строка немного более эффективна и при вводе, и при выполнении. Аналогично «Phop's Bicycles» можно вывести с помощью строки:
echo ("$1ast's Bicycles");
В этом примере PHP определит, что имя переменной — $1ast, а не $last 's». поскольку апостроф (') не является допустимым символом в идентификаторах. Мы не смогли бы таким же способом напечатать, скажем, Phop4bikes. Строка
Echo (“$last4bikes”); // ничего не выводит
не напечатает ничего, поскольку PHP сочтет, что мы хотим напечатать значение переменной с именем $last4bikes (которая не установлена и потому не имеет значения), а не значение $1ast, затем число 4 и строку "bikes". Для исправления ситуации можно воспользоваться конкатенацией или заключить имя переменной в фигурные скобки, чтобы оператор $ знал, какие символы являются частью переменной, а какие - нет:
echo ("$(last)4bikes"); // выводит Phop4bikes
Оператор конкатенации часто используется для того, чтобы за один раз соб. рать большую строку, например, запрос к базе данных:
// Следующий код генерирует запрос SQL
$sql_query = "SELECT Position, Location "
. "FROM JobOpenings”
."WHERE Salary > 60000”
. "ORDER ВУ Location";
Будьте внимательны при использовании оператора конкатенации с числовыми строками:
echo ("4" . "5"); // Выводит 45
echo (4 . 5 ); // Выводит 45 (с пробелами: конкатенация строк "4" и "5".)
echo (4.5); // Выводит 4.5 (без пробелов: интерпретируется как «.» десятичная
точка, а не оператор конкатенации!)
All materials
® by
IATP/Belarus
©2003Голубь
Update:25.05.03