Использование функций для работы с переменными

Прежде чем покинуть мир переменных и операций, рассмотрим РНР-функции для работы с переменными. В РНР доступна библиотека функций, с помощью которых можно манипулировать и проверять значения переменных различными способами.

Проверка и установка типов переменных

Большая часть функций для работы с переменными связана с проверкой типов.
Двумя самыми общими функциями являются gettype () и settype (). Они имеют показанные ниже прототипы, которые определяют, какие аргументы им следует передавать, а также какие значения они возвращают.

string gettype (mixed var) ;

int settype(string var, string type);

При вызове функции gettype () ей передается некоторая переменная. Функция (“get type” означает “получить тип”) определяет тип этой переменой и возвращает строку, содержащую имя типа или unknown type (тип неизвестен), если тип переменной не принадлежит к числу стандартных типов, т.е., не является bool, int, double (float), string, array, object, resource или NULL.

При вызове функции settype () ей необходимо передать переменную, тип которой требуется изменить, и строку, содержащую новый тип переменной из приведенного выше списка.

Данные функции (“set type” означает “установить тип”) используются, как показано в следующем примере:

$а = 56;

echo gettype($а).'<br />';

settype ($а, 'float');

echo gettype($a).'<br />';

Перед первым вызовом функции gettype () переменная имеет тип integer. После вызова функции settype () ее тип изменяется на float.

РНР предоставляет также ряд функций для проверки типов. Каждая из этих функций принимает переменную в качестве аргумента и возвращает значение true или false. К упомянутым функциям относятся перечисленные ниже.

is_array () — проверяет, является ли переменная массивом.

is_double (), is_float (), is_real () (все они — одна и та же функция) — проверяет, является ли переменная вещественным числом.

is_long (), is_int (), is_integer () (все они — одна и та же функция) — проверяет, является ли переменная целым числом.

is_string () — проверяет, является ли переменная строкой.

is_bool () — проверяет, является ли переменная логическим значением.

is_object () — проверяет, является ли переменная объектом.

is_resource () — проверяет, является ли переменная ресурсом.

is_null () — проверяет, является ли переменная пустым значением.

is_scalar () — проверяет, является ли переменная скалярной, т.е. имеет ли она тип integer, boolean, string или float.

is_numeric () — проверяет, является ли переменная числом или какой-нибудь числовой строкой.

is_callable () — проверяет, является ли переменная именем допустимой функции.

Проверка состояния переменных

В РНР имеется несколько функций, предназначенных для проверки состояния переменных.

Первая из них, isset (), имеет следующий прототип:

bool isset (mixed var [, mixed var [,...]])

Эта функция (“is set” — “установлена”) принимает в качестве аргумента имя переменной и возвращает значение true, если переменная существует, и false в противном случае. Вы также можете передать ей разделенный запятыми список переменных, и функция isset () возвратит true, если все переменные в списке установлены.

Переменную можно удалить, используя родственную функцию unset (), которая имеет показанный ниже прототип:

void unset (mixed var [, mixed var [,...]])

Эта функция (“unset” — “не установлена”) фактически удаляет переменную, переданную ей в качестве аргумента.

И, наконец, в РНР доступна функция empty (). Она проверяет существование переменной и наличие у нее непустого, ненулевого значения, возвращая, соответственно, значение true или false. Эта функция (“empty” — “пустая”) имеет следующий прототип:

int empty (mixed var) ;

Рассмотрим пример использования трех перечисленных выше функций.

Посмотрите, как работают эти функции, для чего временно добавьте в разрабатываемый сценарий следующие строки кода:

echo 'isset($tireqty): '.isset($tireqty).'<br />';

echo 'isset($nothere): '.isset($nothere).'<br />';

echo 'empty($tireqty): '.empty($tireqty).'<br />';

echo 'empty($nothere): '.empty($nothere).'<br />';

Функция isset () должна возвратить для переменной $tireqty значение 1 (true) вне зависимости от того, какое значение введено в поле формы, и от того, введено ли вообще значение. Возвращаемое значение функции empty () зависит от введенного значения.

Переменная $nothere не существует, поэтому для нее функция isset () возвращает пустое значение (false), в то время как функция empty () выдает значение true.

Эти функции могут оказаться полезными, если требуется проверить, заполнил ли пользователь соответствующие поля формы.

Повторная интерпретация переменных

Эффекта, эквивалентного приведению типа переменной, можно достичь и с помощью функции. Для этих целей используются три функции:

int intval (mixed var) ;

float floatval (mixed var) ;

string strval (mixed var) ;

Каждая из них принимает в качестве аргумента переменную и возвращает значение переменной, преобразованное к соответствующему типу.

Функция intval () также позволяет указать основание системы счисления, когда переменная преобразуется из строкового представления. (В результате можно преобразовывать, например, шестнадцатеричные строки в целочисленные значения.)