|
массиве. Например, если в массиве $A нужно удалить элемент с ключом
for_del, это можно сделать так:
Unset($A["for_del"]);
Теперь элемент for_del не просто стал пустым, а именно удалился, и последующий
перебор элементов массива его не обнаружит.
Определение типа переменной
Кроме этих трех действий существуют еще несколько стандартных функций, которые
занимаются определением типа переменных и часто включаются в условные опера-
торы. Вот они.
r is_integer($a)
Возвращает true, если $a — целое число.
r is_double($a)
Возвращает true, если $a — действительное число.
r is_string($a)
Возвращает true, если $a является строкой.
r is_array($a)
Возвращает true, если $a является массивом.
Глава 7. Переменные, константы, выражения 123
r is_object($a)
Возвращает true, если $a объявлена как объект.
r is_boolean($a)
Возвращает true, если $a определена как логическая переменная.
r gettype($a)
Возвращает строки, соответственно, со значениями: array, object, integer,
double, string, boolean или unknown type в зависимости от типа перемен-
ной.
Последнее значение возвращается для тех переменных, типы которых не являются
встроенными в PHP (а такие бывают, например, при добавлении к PHP соответст-
вующих модулей, расширяющих возможности языка). Я на них останавливаться не
буду, т. к. в будущем наверняка появятся сотни таких модулей для PHP.
Установка типа переменной
Существует функция, которая пытается привести тип указанной переменной к одному
из стандартных (например, вам может понадобиться перевести строку в целое
число).
Вот она.
settype($a,$type)
Функция пытается привести тип переменной $a к типу $type ($type — одна из
строк, возвращаемых gettype(), кроме boolean). Если это сделать не удалось (на-
пример, в $a "нечисловая" строка, а мы вызываем settype
($a,"integer")), возвращает false.
Оператор присваивания
Сильно не ошибусь, если скажу, что нет на свете такой программы, в которой не
было
бы ни одного оператора присваивания. И в PHP-программе этот оператор, конечно
же, тоже есть. Мы уже с ним встречались — это —знак равенства =:
$имя_переменной=значение;
Как видите, разработчики PHP пошли по линии Си в вопросе операторов присваива-
ния (и проверки равенства, которая обозначается ==), чем, я уверен, привнесли
свой
вклад в размножение многочисленных ошибок. Например, если в Си мы пишем
if(a=b) { ... }
вместо
if(a==b) { ... }
Часть III. Основы языка PHP 124
(пропуская ненароком один символ равенства), то компилятор выдаст нам по
крайней
мере предупреждение. Иначе обстоит дело в PHP: попробуйте как-нибудь на досуге
написать:
$a=0; $b=1;
if($a=$b) echo "a e b iaeiaeiau"; else echo "a e b .acee.iu";
Интерпретатор даже не "пикнет", а программа восторженно заявит, что "a и b
одина-
ковы", хотя это, очевидно, совсем не так (дело в том, что $a=$b так же, как и
$a+$b,
является выражением, значение которого есть правая часть оператора присваивания,
равная в нашем примере 1).
Почему разработчики PHP пошли таким путем, хотя, я уверен, отлично пони-
мали его недостатки (двух мнений тут быть просто не может)? Что бы им стои-
ло вместо = использовать (например, как в Паскале) :=, а вместо == — =? Я
не знаю. Зато знаю, что в PHP есть еще несколько "ляпов" (только давайте не
будем разжигать религиозных войн по поводу оператора == — каждый про-
граммист волен иметь свое мнение), перенятых из Си. Так что призываю вас
быть предельно внимательными — тут могут поджидать очень даже неприят-
ные сюрп
|
|