Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Использование структур с условиями



<? php if ($expression == true): ? >
Это будет отображено, если выражение истинно.
<? php else: ? >
В ином случае будет отображено это.
<? php endif; ? >

Пример №1 Продвинутое изолирование с использованием условий

В этом примере PHP пропускает блоки, где условие не соблюдается. Даже несмотря на то, что они находятся вне пары открывающих/закрывающих тегов, PHP пропустит их в соответствии с условием, так как интерпретатор PHP будет перепрыгивать через блоки, содержащиеся внутри условия, которое не соблюдается.

При выводе больших блоков текста выход из режима синтаксического разбора PHP обычно более эффективен, чем отправка текста с помощью функций echo или print.

Существует четыре набора тегов, которые могут быть использованы для обозначения PHP-кода. Из них только два <? php? > и < script language=" php" > < /script> ) всегда доступны. Другими двумя являются короткие теги и теги в стиле ASP, которые могут быть включены или выключены в конфигурационном файле php.ini. Хотя короткие теги и теги в стиле ASP могут быть удобны, они не так переносимы, как длинные версии, и поэтому не рекомендуются. Кроме того, если вы намереваетесь вставлять PHP-код в XML или XHTML, чтобы соответствовать XML стандартам, вам следует использовать форму <? php? >.

1. <? php echo 'если вы хотите работать с документами XHTML или XML, делайте так'; ? >

2. < script language=" php" >
echo 'некоторые редакторы (например, FrontPage) не
любят инструкции обработки';
< /script>

3. <? echo 'это простейшая инструкция обработки SGML'; ? >
<? = выражение? > Это синоним для " <? echo выражение? > "

4. < % echo 'Вы можете по выбору использовать теги в стиле ASP'; %>
< %= $variable; # Это синоним для " < % echo..." %>

Короткие теги (третий пример) доступны, только когда они включены с помощью директивы short_open_tag в конфигурационном файле php.ini, либо если PHP был скомпилирован с опцией --enable-short-tags.

Теги в стиле ASP (четвертый пример) доступны, только когда они включены с помощью директивы asp_tags в конфигурационном файле php.ini.

Замечание:

Следует избегать использования коротких тегов при разработке приложений или библиотек, предназначенных для распространения или размещения на PHP-серверах, не находящихся под вашим контролем, так как короткие теги могут не поддерживаться на целевом сервере. Для создания переносимого, совместимого кода, не используйте короткие теги.


Разделение инструкций

Как в C или Perl, PHP требует окончания инструкций точкой запятой в конце каждой инструкции. Закрывающий тег блока PHP-кода автоматически применяет точку с запятой; т.е. нет необходимости ставить точку с запятой в конце последней строки блока с PHP-кодом. Закрывающий тег блока " поглотит" немедленно следующий за ним переход на новую строку, если таковой будет обнаружен.

<? php
echo 'Это тест';
? >

<? php echo 'Это тест'? >

<? php echo 'Мы опустили последний закрывающий тег';

 

Замечание:

Закрывающий тег PHP-блока в конце файла не является обязательным, и в некоторых случаях его опускание довольно полезно, например, при использовании include или require, так, что нежелательные пробелы не останутся в конце файла и вы все еще сможете добавить http-заголовки после подключения к ответу сервера. Это также удобно при использовании буферизации вывода, где также нежелательно иметь пробелы в конце частей ответа, сгенерированного подключаемыми файлами.

Комментарии

PHP поддерживает комментарии в стиле 'C', 'C++' и оболочки Unix (стиль Perl). Например:

<? php
echo " Это тест"; // Это однострочный комментарий в стиле c++
/* Это многострочный комментарий
еще одна строка комментария */
echo " Это еще один тест";
echo " Последний тест"; # Это комментарий в стиле оболочки Unix
? >

Однострочные комментарии идут только до конца строки или текущего блока PHP-кода, в зависимости от того, что идет перед ними. Это означает, что HTML-код после //...? > или #...? > будет напечатан:? > завершает режим PHP и возвращает режим HTML, а // или # не могут повлиять на это. Если включена директива asp_tags, то аналогичное поведение будет и с // %> и # %> . Однако, тег < /script> не завершает режим PHP в однострочном комментарии.

< h1> Это <? php # echo " простой";? > пример< /h1>
< p> Заголовок вверху выведет 'Это пример'.< /p>

 

'C'-комментарии заканчиваются при первой же обнаруженной последовательности */. Убедитесь, что вы не вкладываете друг в друга 'C'-комментарии. Очень легко допустить эту ошибку при комментировании большого блока кода.

<? php
/*
echo " Это тест"; /* Этот комментарий вызовет проблему */
*/
? >


Операторы: сравнения

$a == $b // TRUE если $a равно $b.

$a === $b // TRUE если $a равно $b И имеет тот

Же тип

$a! = $b // TRUE если $a не равно $b.

$a! == $b // TRUE если $a не равно $b ИЛИ в

Случае, если они разных типов.

$a < $b // TRUE если $a строго меньше $b.

$a > $b // TRUE если $a строго больше $b.

$a < = $b // TRUE если $a меньше или равно $b.

$a > = $b // TRUE если $a больше или равно $b.

Операторы: логические

$a and $b // TRUE если и $a, и $b TRUE.

$a or $b // TRUE если или $a, или $b

TRUE.

! $a // TRUE если $a не TRUE.

$a & & $b // TRUE если и $a, и $b TRUE.

$a || $b // TRUE если или $a, или $b

TRUE.

$a and $b and $c; $a and $b or $c

$a and ($b and $c) ó $a and $b & & $c

$a and ($b or $c) ó $a and $b || $c


Типы данных

PHP поддерживает восемь простых типов.

Четыре скалярных типа:

ü boolean

ü integer

ü float (число с плавающей точкой, также известное как double)

ü string

Два смешанных типа:

ü array

ü object

Два специальных типа:

ü resource

ü NULL

Как правило, программист не устанавливает тип переменной; обычно это делает PHP во время выполнения программы в зависимости от контекста, в котором используется переменная.

Замечание:

Если вы желаете проверить тип и значение определённого выражения, используйте var_dump() .

Если же вам для отладки необходимо просто удобочитаемое представление типа, используйте gettype() . Чтобы проверить на определенный тип, не используйте gettype() , применяйте для этого is_type функции. <? php
$a_bool = TRUE; // логический
$a_str = " foo"; // строковый
$a_str2 = 'foo'; // строковый
$an_int = 12; // целочисленный

echo gettype($a_bool); // выводит: boolean
echo gettype($a_str); // выводит: string

// Если это целое, увеличить на четыре
if (is_int($an_int)) {
$an_int += 4;
}

// Если $a_bool - это строка, вывести ее
// (ничего не выводит)
if (is_string($a_bool)) {
echo " Строка: $a_bool";
}
? >

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

Обратите внимание, что переменная, в зависимости от ее типа в данный момент, в определённых ситуациях может иметь разные значения.

 

Булев тип

Это простейший тип. boolean выражает истинность значения. Он может быть либо TRUE либо FALSE.

Для указания boolean, используйте ключевое слово TRUE или FALSE. Оба регистро-независимы.

<? php
$foo = True; // присвоить $foo значение TRUE
? >

Обычно, некоторый оператор возвращает boolean значение, которое потом передается управляющей конструкции.

<? php
// == это оператор, который проверяет
// эквивалентность и возвращает boolean
if ($action == " show_version" ) {
echo " The version is 1.23";
}

// это необязательно...
if ($show_separators == TRUE) {
echo " < hr> \n";
}

//... потому что следующее имеет тот же самый смысл:
if ($show_separators) {
echo " < hr> \n";
}
? >

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

При преобразовании в boolean, следующие значения рассматриваются как FALSE:

ü само значение boolean FALSE

ü integer 0 (ноль)

ü float 0.0 (ноль)

ü пустая строка, и строка " 0"

ü массив без элементов

ü объект без полей (только для PHP 4)

ü особый тип NULL (включая неустановленные переменные)

ü Объекты SimpleXML, созданные из пустых тегов

Все остальные значения рассматриваются как TRUE (включая любой resource а также число -1).

Целые числа

Integer - это число из множества ℤ = {..., -2, -1, 0, 1, 2, ...}.

Целые могут быть указаны в десятичной, шестнадцатеричной или восьмеричной системе счисления, по желанию с предшествующим знаком (- или +).

Если вы используете восьмеричную систему счисления, вы должны предварить число 0 (нулем), для использования шестнадцатеричной системы нужно поставить перед числом 0x.

Пример №1 Целые

<? php
$a = 1234; // десятичное число
$a = -123; // отрицательное число
$a = 0123; // восьмеричное число (эквивалентно 83 в десятичной системе)
$a = 0x1A; // шестнадцатеричное число (эквивалентно 26 в десятичной системе)
? >

Размер целого зависит от платформы, хотя, как правило, максимальное значение около двух миллиардов (это 32-битное знаковое). PHP не поддерживает беззнаковые целые.


Превышение размера целого

Если вы определите число, превышающее пределы целого типа, оно будет интерпретировано как число с плавающей точкой. Также, если вы используете оператор, результатом работы которого будет число, превышающее пределы целого, вместо него будет возвращено число с плавающей точкой.

<? php
$large_number = 2147483647;
var_dump($large_number);
// вывод: int(2147483647)

$large_number = 2147483648;
var_dump($large_number);
// вывод: float(2147483648)

// это справедливо и для шестнадцатеричных целых:
var_dump( 0x80000000 );
// вывод: float(2147483648)

$million = 1000000;
$large_number = 50000 * $million;
var_dump($large_number);
// вывод: float(50000000000)
? >

В PHP не существует оператора деления целых. Результатом 1/2 будет число с плавающей точкой 0.5. Вы можете привести значение к целому, что всегда округляет его в меньшую сторону, либо использовать функцию round().

<? php
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
? >


 

Числа с плавающей точкой

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

<? php
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
? >

Строки

Строка - это набор символов. В PHP символ это то же самое, что и байт, это значит, что возможно ровно 256 различных символов. Это также означает, что PHP не имеет встроенной поддержки Unicode'а. Некоторую поддержку Unicode'а обеспечивают функции utf8_encode() и utf8_decode().

Замечание:

Нет никаких проблем, если строка очень велика. Практически не существует ограничений на размер строк, налагаемых PHP, так что нет абсолютно никаких причин беспокоиться об их длине.

Строка может быть определена тремя различными способами.

ü одинарными кавычками

ü двойными кавычками

ü heredoc-синтаксисом

Одинарные кавычки

Простейший способ определить строку - это заключить ее в одинарные кавычки (символ ').

Чтобы использовать одинарную кавычку внутри строки, как и во многих других языках, ее необходимо предварить символом обратной косой черты (\), т. е. экранировать ее. Если обратная косая черта должна идти перед одинарной кавычкой либо быть в конце строки, вам необходимо продублировать ее. Обратите внимание, что если вы попытаетесь экранировать любой другой символ, обратная косая черта также будет напечатана! Так что, как правило, нет необходимости экранировать саму обратную косую черту.

Двойные кавычки

Если строка заключена в двойные кавычки (" ), PHP распознает большее количество управляющих последовательностей для специальных символов.

Управляющие последовательности
последовательность значение
\n новая строка (LF или 0x0A (10) в ASCII)
\r возврат каретки (CR или 0x0D (13) в ASCII)
\t горизонтальная табуляция (HT или 0x09 (9) в ASCII)
\\ обратная косая черта
\$ знак доллара
\" двойная кавычка
\[0-7]{1, 3} последовательность символов, соответствующая регулярному выражению, символ в восьмеричной системе счисления
\x[0-9A-Fa-f]{1, 2} последовательность символов, соответствующая регулярному выражению, символ в шестнадцатеричной системе счисления

Heredoc

Другой способ определения строк - это использование heredoc -синтаксиса (" < < < " ). После < < < необходимо указать идентификатор, затем идет строка, а потом этот же идентификатор, закрывающий вставку.

Закрывающий идентификатор должен начинаться в первом столбце строки. Кроме того, идентификатор должен соответствовать тем же правилам именования, что и все остальные метки в PHP: содержать только буквенно-цифровые символы и знак подчеркивания, и должен начинаться с нецифры или знака подчеркивания.

Пример определения heredoc-строки

<? php
$str = < < < EOD
Пример строки,
охватывающей несколько строчек,
с использованием heredoc-синтаксиса.
EOD;

/* Более сложный пример с переменными. */
class foo
{
var $foo;
var $bar;

function foo()
{
$this-> foo = 'Foo';
$this-> bar = array('Bar1', 'Bar2', 'Bar3');
}
}

$foo = new foo();
$name = 'МоеИмя';

echo < < < EOT
Меня зовут " $name". Я печатаю $foo-> foo.
Теперь я вывожу {$foo-> bar[1]}.
Это должно вывести заглавную букву 'A': \x41
EOT;
? >

Замечание:

Поддержка heredoc была добавлена в PHP 4.

Массивы

Массив в PHP - это упорядоченное отображение, которое устанавливает соответствие между значением и ключем. Этот тип оптимизирован в нескольких направлениях, поэтому вы можете использовать его как собственно массив, список (вектор), хэш-таблицу (являющуюся реализацией карты), словарь, коллекцию, стэк, очередь или, возможно, как что-то еще. Поскольку вы можете иметь в качестве значения другой массив PHP, вы можете также легко эмулировать деревья.

Объяснение этих структур данных выходит за рамки данного справочного руководства, но вы найдете как минимум один пример каждой из них. За дополнительной информацией вы можете обратиться к соответствующей литературе по этой обширной теме.

Массив может быть создан языковой конструкцией array(). В качестве параметров она принимает определенное количество разделенных запятыми пар key => value (ключ => значение).

array( key => value, ... )// key может быть integer или string// value может быть любым значением

<? php
$arr = array(" foo" => " bar", 12 => true);

echo $arr[" foo" ]; // bar
echo $arr[12]; // 1
? >

key может быть либо integer, либо string. Если ключ - это стандартное представление integer, он так и будет интерпретироваться (т.е. " 8" будет восприниматься как 8, тогда как " 08" будет интерпретироваться как " 08" ). В PHP нет разницы между индексными и ассоциативными массивами; существует только один тип массива, который может содержать и числовые, и строковые индексы.

Полезные функции

Для работы с массивами существует достаточное количество полезных функций.

Замечание:

Функция unset() позволяет удалять ключи массива. Обратите внимание, что массив НЕ будет переиндексирован. Если вы использовали только " обычные числовые индексы" (увеличивающиеся на единицу, начиная с нуля), вы можете переиндексировать массив используя array_values().

<? php
$a = array(1 => 'один', 2 => 'два', 3 => 'три');
unset($a[2]);
/* даст массив, представленный так:
$a = array(1 => 'один', 3 => 'три');
а НЕ так:
$a = array(1 => 'один', 2 => 'три');
*/

$b = array_values($a);
// Теперь $b это array(0 => 'один', 1 => 'три')
? >

Преобразование в массив

Для любого из типов: integer, float, string, boolean и resource, если вы преобразуете значение в массив, вы получите массив с одним элементом (с индексом 0), являющимся скалярным значением, с которого вы начали.

Если вы преобразуете в массив объект (object), вы получите в качестве элементов массива свойства (переменные-члены) этого объекта. Ключами будут имена переменных-членов.

Если вы преобразуете в массив значение NULL , вы получите пустой массив.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-06-05; Просмотров: 505; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.049 с.)
Главная | Случайная страница | Обратная связь