Переменные
Функции работы с данными
🕛 01.11.2006, 13:02
Манипуляции с переменными get_defined_vars
Получение перечисления всех доступных переменных
array get_defined_vars (void )
Возвращает многомерный ассоциативный массив, содержащий ВСЕ переменные, доступные сценарию.
См. также: get_defined_functions().
empty
Проверка, имеет ли переменная значение
int empty (mixed var)
Возвращает FALSE, если переменная имеет непустое или отличное от нуля значение. Иначе возвращает TRUE. Фактически функция проверяет, имеет ли переменная значение, которое может быть приравнено к 0, то есть: (var==0).
$var = 0.
if (empty($var)) { // = TRUE
echo '$var - либо О. либо не имеет значения;
if (Msset($var)),{ // = FALSE
echo '$var не имеет значения';
} }
Заметьте, что эту функцию бесполезно использовать с аргументом, отличным от переменной, например выражение empty (adds!ashes ($name)) бессмысленно, так как здесь проверяется значение, возвращаемое функцией. Единственное, что может выявить в данном варианте функция empty(), это имеет ли выражение значение, эквивалентное TRUE (не равное нулю), а это может быть проверено и без использования функции.
См. также: isset() и unset().
isset
Проверка существования переменной
int isset (mixed var)
Возвращает TRUE, если переменная, указанная аргументом var, существует.
Фактически функция проверяет, имеет ли переменная значение, идентичное null, то есть : (var=nuH). Отметьте различие между равенством и идентичностью.
Для уничтожения переменной используйте функцию unset().
$а = "test".
echo isset ($a); // TRUE
unset ($a);
echo isset ($a). // FALSE
См. также: empty() и unset().
unset
Уничтожение переменной
int unset (mixed var [, mixed var [, ...]])
Уничтожает указанные переменные var и возвращает TRUE.
// Уничтожить одну переменную unset ($foo).
// Уничтожить один элемент массива unset ($bar['quux']);
// Уничтожить несколько переменных
unset (Sfool. $foo2, $foo3):
Поведение функции unset () внутри пользовательской функции может быть различным в зависимости от типа переменной, которую предстоит уничтожить. Так, при попытке уничтожить глобализированную переменную уничтожается только ее локальная копия, на глобальном же уровне воздействия на неременную не оказывается. То же происходит, если даже переменная была передана по ссылке.
function destroy_foo() {
global $foo:
unset(Sfoo); }
$foo = 'AM';
destroy_foo();
echo $foo; // выдает: ААА
function f(&$bar) {
unset($bar),
$bar = "blah"; }
echo "$foo\n".// выдает- ААА
f($foo).
echo "$foo\n".// выдает: ААА
Для статических переменных ситуация аналогична: уничтожается не сама переменная, а ссылка на нее.
function foot) {
static $a. :
$а++.
echo "$a\n":
unset($a); }
foot). '/ выдает- 1 foo(): // выдает 2 foo():
// выдает: З
Чтобы уничтожить глобальную переменную внутри функции с помощью unset (), обращайтесь к ней через массив SGLOBALS:
function foo() {
unset($GLOBALS['bar']): }
$bar = "something" . foo():
См. также: isset() и empty().
gettype
Получение типа переменной
string gettype (mixed var)
Возвращаемый в строке тип переменной var обозначается следующими значениями:
«boolean»;
«integer»;
«double»;
«string»;
«array»;
«object»;
«resource;
«unknown type».
См. также: settype().
settype
Явная установка типа переменной
int settype (string var, string type)
Устанавливает для переменной с именем var тип type. Возвращает TRUE при успехе; иначе FALSE.
Возможные значения типа, передаваемого в аргументе type:
«integer»;
«double»;
«string»;
«array»;
«object».
См. также: gettype().
intval
Получение целочисленного значения переменной в указанной системе счисления
int intval (mixed var [, int base])
Возвращает целочисленное значение аргумента var, используя указанное основание системы счисления base (ио умолчанию 10 - «десятичное»). Аргумент var может быть любым скалярным типом; передавать в качестве аргумента массивы или объекты не допускается. Если аргумент var - числовой, то преобразование не производится, для строк основание системы счисления указывает на ту систему счисления, в которой находится число в строке.
echo intval ("1234.995"): // выводит 1234
echo intval ("1234455"). // выводит 1234
echo intval ("1234.455" .8):// выводит 668
echo intval ("1234455" .2):// выводит 1
См. также: doublevaK), strval(), settype() и «Определение типа».
doubleval
Извлечение значения дробного числа из переменной
double doubleval (mixed var)
Возвращает дробное (double floating point) значение числа, извлеченного из аргумента var, который может иметь любой скалярный тип. Указывать в аргументе объект или массив нельзя.
$var = '122 34343The';
$double_value_of_var =- doubleval ($var);
print $double_value_of_var. // prints 122.34343
См. также: intva(), strva(), settype().
strval
Получение строкового значения переменной
string strval (mixed var)
Возвращает строковое значение переменной var, которая может иметь любой скалярный тип. Не допускается передача в функцию объектов или массивов.
См. также: doubleval(), intva(), settype() и «Определение типа».
serialize
Генерация хранимого образа переменной
string serialize (mixed value)
Возвращает строку, содержащую байтовую репрезентацию содержимого указанной value переменной, для того чтобы это значение могло быть сохранено (например, в базе данных или файле), а впоследствии, возможно, восстановлено с помощью функции unserializeO.
Это полезно для сохранения или передачи значений РНР без потери их типа и структуры. Функция работает с типами: integer, double, string, array (также многомерными) и object (свойства объектов сохраняются, но методы - нет).
// В Ssession_data содержится
многомерный массив с данными сессии // и информацией о текущем пользователе.
Мы используем serialize() // для сохранения, при завершении сценария,
запросов пользователя.
$сопп - odbc_connect ("webdb". "php". "chicken").
Sstmt - odbc_prepare (Sconn,
"UPDATE sessions SET data = ? WHERE id = ?")
; $sqldata = array(serialize($sessior_data).
$PHP_AUTH_USER). if (!odbc_execute (Sstmt.
Msqldata)) f Sstmt = odbc_prepare(Sconn.
"INSERT INTO sessions (id. data) VALUES(?. 7)"); if (!odbc_execute(Sstmt.
&$sqldata)) { /* однако. Ошибочка */ } }
Для «пытливых умов», которых все же интересует, в каком формате функция сохраняет данные, приводим следующий пример.
<?php
$d = array (1. 2. array ("a", "b", "c")).
echo senalize(Ja):
->> II выводит строку, j // a.3
(i O.l,l:i:l:i:2;1:2:a:3
{i 0:s:1:"a".i:l;s:l:"b";1:2:S:1:"c".}}
unserialize
Создание переменной из ее сохраненного образа
mixed unserialize (string str)
Функция возвращает значение сериализированной ранее (функцией serialize()) переменной. Возвращаемое значение может иметь тип: integer, double, string, array или object. Если был сериализирован объект, то восстанавливаются только его свойства (но не методы).
// Здесь используется unserialize() для загрузки данных сессии // из базы данных в массив $session_data
Этот пример дополняет // соответствующий,
приведенный в описании функции serialize()
Sconn « odbc_connect ("webdb". "php". "chicken").
Sstmt = odbc_prepare
($conn. "SELECT data FROM sessions WHERE id = ?");
Ssqldata = array ($PHP_AUTH_USER);
if (!odbc_execute (Sstmt. &$sqldata) || !odbc_fetch_into (Sstmt. &$tmp)) {
// если execute or fetch fails,
инициализируем пустой массив
$session_data = arrayO: } else {
// здесь мы должны иметь
// сериализированные данные в
массиве StmpLOJ.
$session_data = unserialize ($tmp[0]).
if (!is_array ($session_data)) {
// где-то ошибка произошла, инициализируем
пустой массив $session_data » array(); } }
print_r
Отображение информации о переменной и ее содержимом
void printer (mixed expression)
Функция отображает информацию о переменных и их значениях в доступном для чтения человеком варианте. Если указывается переменная, содержащая строку или числовое значение, распечатываются их значения. При указании массива распечатываются значения индексов и значений элементов (также и для вложенных массивов), как в примере ниже. Для объектов распечатываются имена и значения свойств, как для массивов.
Сравните функцию print_r() с функцией var_dump().
<?php
$а = array (1. 2, array ("a", "b". "с")).
print_r ($a); ?>
// - Сценарий напечатает -
// Array // (
II [0] -> 1 // [1] => 2
// [2] => Array // (
// [0] => а
// [1] => b
// [2] => с
// )
// )
Учтите, что функция будет выполняться бесконечно, если в указанном массиве или объекте имеются прямые или косвенные ссылки на себя. То же справедливо и для вложенных объектов и массивов. Например, это касается вызова print_r($GLOBALS), так как массив SGLOBALS является глобальной переменной и содержит ссылку на себя.
var_dump
Отображение структурированной информации о переменной
void var_dump (mixed expression)
Выдает структурированную информацию о выражении (переменной), включающую его тип и значение. Массивы обрабатываются рекурсивно для каждого значения.
Сравните функцию var_dump() с print_r().
<рге> <?php
$а = array (1. 2, array ("a", "b". "с")); var_dump ($a); ?>
</рге>
При запуске сценария будет выдано:
аггау(З) { Г0]=>
int(l)
int(2) [2]=> array(3) {
\ stnng(l) "a"
f\ [1]=>
',** string(l) "b"
1
/ [2]->
/ string(l) "c"
} }
Логические функции определения типа переменной
is_scalar
Проверка, является ли переменная простой
bool is_scalar (mixed var)
Возвращает TRUE, если переменная var имеет скалярный тип (числа, строки, логические значения), но не комплексный (массивы или объекты).
is_null
Проверка, является ли переменная пустой
bool is_null (mixed var)
Возвращает TRUE, если переменная var не существует (или ей явно присвоено пустое значение null). Функция эквивалентна выражению: (var = null), а также is_set(var).
is_ numeric
Проверка, является ли переменная числовой
bool isjiumeric (mixed var)
Возвращает TRUE, есл и переменная var имеет численный тип (integer, double), или строковый с числовым значением.
is_bool
Проверка, является ли переменная логической
bool is_bool (mixed var)
Возвращает TRUE, если переменная var имеет тип логического значения (TRUE либо FALSE), иначе FALSE.
is_nt
Синоним функции isjong ()
booll is_int (mixed var)
Возвращает TRUE, если переменная var имеет целочисленный тип.
is_integer
Синоним функции isjong ()
bool is_integer (mixed var)
Возвращает TRUE, если переменная var имеет целочисленный тип.
is_long
Проверка, является ли переменная целочисленной
bool isjong (mixed var)
Возвращает TRUE, если переменная var имеет целочисленный тип (integer, long). Синонимы функции: is_int(), is_integer().
is_real
Синоним функции is_double()
bool is_real (mixed var)
is_float
Синоним функции is_double()
bool is_float (mixed var)
is_double
Проверка, является ли переменная дробной
bool is_double (mixed var)
Возвращает TRUE, если переменная var имеет тип double, иначе FALSE.
is_string
Проверка, является ли переменная строковой
bool is_string (mixed var)
Возвращает TRUE, если переменная var - это строка, иначе FALSE.
is_array
Проверка, является ли переменная массивом
bool is_array (mixed var)
Возвращает TRUE, если переменная var - это массив, иначе FALSE.
is_object
Проверка, является ли переменная объектом
bool is_object (mixed var)
Возвращает TRUE, если переменная var - это объект, иначе FALSE.
is_resource
Проверка, является ли переменная указателем на ресурс
bool is_resource (mixed var)
Возвращает TRUE, если переменная var указывает на ресурс, выделенный и возвращенный предназначенной для этого функцией.
Ресурсы - это объекты, подобные файлам или результатам запросов к базам данных, выделяемые и освобождаемые внутренними функциями РПР. Когда программе больше не требуется какой-либо ресурс, хорошей практикой программирования является его явное освобождение предназначенными для этого функциями. Но в большинстве случаев интерпретатор РНР самостоятельно, по мере необходимости освобождает ненужные ресурсы (обычно при завершении сценария). Попробуйте, например, разобраться, чем отличаются устойчивые подключения к серверам баз данных и временные.
get_resource_type
Определение типа дескриптора ресурса
string get_resource_type (resource $handle)
Возвращает строку, содержащую описание типа ресурса. Если в аргументе передается неверный указатель на ресурс, то возникает ошибка.
$с = mysql_connect();
echo get_resource_type($c) "\n":
// prints: mysql link
$fp = fopen("foo"."w");
echo get_resource_type($fp) "\n": // prints: file
Sdoc = new_xmldoc("l 0").
echo get_resource_typef$doc->doc)."\n":
// prints, domxml document