Учебник по основам PHP




Переменные


Манипуляции с переменными

get_defined_vars

Получение перечисления всех доступных переменных

array get_defined_vars (void )

Возвращает многомерный ассоциативный массив, содержащий ВСЕ переменные, доступные сценарию.

См. также: get_defined_functions().

empty

Проверка, имеет ли переменная значение

int empty (mixed var)

Возвращает FALSE, если переменная имеет непустое или отличное от нуля значение. Иначе возвращает TRUE. Фактически функция проверяет, имеет ли переменная значение, которое может быть приравнено к 0, то есть: (var==0). < /FONT>

$var = 0. if (empty($var)) { // = TRUE echo '$var - либо О. либо не имеет значения; if (Msset($var)),{ // = FALSE echo '$var не имеет значения'; } } < /FONT >

Заметьте, что эту функцию бесполезно использовать с аргументом, отличным от переменной, например выражение empty (adds!ashes ($name)) бессмысленно, так как здесь проверяется значение, возвращаемое функцией. Единственное, что может выявить в данном варианте функция empty(), это имеет ли выражение значение, эквивалентное TRUE (не равное нулю), а это может быть проверено и без использования функции.

См. также: isset() и unset().

isset

Проверка существования переменной

int isset (mixed var)

Возвращает TRUE, если переменная, указанная аргументом var, существует.

Фактически функция проверяет, имеет ли переменная значение, идентичное null, то есть : (var=nuH). Отметьте различие между равенством и идентичностью. < /FONT>

Для уничтожения переменной используйте функцию unset().

$а = "test". echo isset ($a); // TRUE unset ($a); echo isset ($a). // FALSE < /FONT >

См. также: 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".// выдает: ААА < /FONT >

Для статических переменных ситуация аналогична: уничтожается не сама переменная, а ссылка на нее.

function foot) { static $a. : $а++. echo "$a\n": unset($a); } foot). '/ выдает- 1 foo(): // выдает 2 foo(): // выдает: З

Чтобы уничтожить глобальную переменную внутри функции с помощью unset (), обращайтесь к ней через массив SGLOBALS:

function foo() { unset($GLOBALS['bar']): } $bar = "something" . foo():< /P >< /P > < /FONT > < /P > См. также: 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 < /FONT >

См. также: 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)) { /* однако. Ошибочка */ } } < /FONT >

Для «пытливых умов», которых все же интересует, в каком формате функция сохраняет данные, приводим следующий пример.

<?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".}} < /FONT >

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(); } } < /FONT >

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] = > с // ) // ) < /FONT >

Учтите, что функция будет выполняться бесконечно, если в указанном массиве или объекте имеются прямые или косвенные ссылки на себя. То же справедливо и для вложенных объектов и массивов. Например, это касается вызова 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); ?> </рге> < /FONT >

При запуске сценария будет выдано:

аггау(З) { Г0]=> int(l) int(2) [2]=> array(3) { \ stnng(l) "a" f\ [1]=> ',** string(l) "b" 1 / [2]-> /string(l) "c" } }< /FONT>

Логические функции определения типа переменной

is_scalar

Проверка, является ли переменная простой

bool is_scalar (mixed var)

Возвращает TRUE, если переменная var имеет скалярный тип (числа, строки, логические значения), но не комплексный (массивы или объекты).

is_null

Проверка, является ли переменная пустой

bool is_null (mixed var)

Возвращает TRUE, если переменная var не существует (или ей явно присвоено пустое значение null). Функция эквивалентна выражению: (var = null), а также is_set(var). < /FONT >

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 < /FONT >









Начало        Вперед




Книжный магазин