Глава 11. Выражения в PHP
В РНР почти все является выражениями. Простейший и наиболее точный способ определить выражение — это «что-то, имеющее значение», например константы и переменные. Когда вы набираете $а=5, вы присваиваете значение 5 переменной $а.
После этого, если вы напишете $b = $а, вы будете ожидать того же, как если бы вы написали $b = 5. Другими словами, $b это также выражение со значением 5. Если все написано правильно, то именно так оно и случится. Как таковые выражения встречаются практически в каждой строке документированного кода. В данной главе рассмотрим основные аспекты использования выражений.
Выражения могут быть так различны, что иногда это может вас запутать. Есть много способов, которыми можно описать то или иное действие. И так, как вам это удастся сделать, будет работать и ваш скрипт. Например, чтобы заменить в текстовом поле $text нажатие клавиши «Enter» натег <br>, а главное, чтобы все было в одну строчку, необходимо воспользоваться следующей строкой:
$text=ereg_replace ("n", "<br>", $text);
И для этого совсем не нужно пользоваться функцией nl2br.
В этой главе вы все это подробно изучите, а также мы приведем несколько примеров, направленных на конкретную поставленную задачу:
• примеры выраженийфункций;
• скалярные и нескалярные выражения;
• регулярные выражения РНР и выражения присваивания;
• выражения сравнения;
• совмещенныевыражения;
• выражения условных операторов;
• логические значенижыражений;
• пример счетчика посещений на РНР.
11.1. Примеры выражений функций
Представьте себе программу, состоящую из большого числа подпрограмм. Чтобы выполнить подпрограмму в самой программе, надо при этом возвратить значение переменной, т. е. результат самой работы фикции. Функции являются более сложными примерами выражений. Например:
function mynew() {
return 5;
}
Предположим, что вы знакомы с концепциями функции (см. ч. 4), вы считаете, что $с = mynew() практически то же самое, что $с = 5, и вы правы. Функции — это выражения с тем значением, которое они возвращают. Так как mynew() возвращает 5, значение выражения mynew() — 5.
Приведем пример, показывающий работу функции.
Пример 11.1. Функция return
<?
$а = 5;
function mynew() {
$name = 5;
$а = $name + 5;
return $a;
}
$а = mynew();
echo $a;
?>
Функция mynew() работает с переменными $а, $name. Что конкретно выполняет данная функция, можно понять по строчке $а = $name + 5; — именно в этой строчке значение переменной $а будет равно 10. После этого идет оператор return $а;, который возвращает значение, равное переменной $а = 10. После того как функция была написана, необходимо во время программы вызвать ее. Для этого предназначена строка $а= mynew();. Именно в этой строке переменной За, которой вне функции (вначале программы) было задано значение 5, функцией задается новое значение. Убедиться в этом помогает строка echo $а;, которая выводит на экран значение переменной. В нашем случае число, которое будет выведено на экран, равно 10.
При работе массивов с функциями специально объявлять массив или хэш не надо. Но в некоторых случаях это бывает полезным. Например, если ваша функция возвращает массив, то онадолжна вернуть именно массив, а не неопределенное значение.
Пример 11.2. Функции работы с массивами
<?
function {
if ($num>0) return $a[$num] = $num;
return $a;
}
?>
Эта функция возвращает массив, если $num больше нуля, и неопределенное значение — в противном случае, что затрудняет работу с результатом ее выполнения:
<?
...
$foo = SetArray(0);
$bar = $foo[0];
...
?>
Здесь вам поможет функция array() , возвращающая массив, в том числе и пустой. В другом случае стоит сразу инициализировать переменную $а = array() или вернутьпустой массив как return array(). Первый вариант предпочтительнее.
В РНР есть даже некоторая т. е. вы можете создавать классы, методы и т. д.
Как правил о, классы хороши в больших приложениях или как средство ограничение области видимости переменной.
СОВЕТ
Несмотря на то что объектный подход сейчас пользуется большой популярность, мы не рекомендуем очень уж активно им пользоваться.
Реализация классов в РНР 4 намного эффективнее, чем в РНР 3.