Синтаксис php. Основной синтаксис PHP
Создайте файл с именем hello.php в корневом каталоге ваших документов Web-сервера и запишите в него следующее:
Пример 2-1. Первый скрипт на PHP: hello.php
Тестируем PHP
Эта программа выведет следующее:
Тестируем PHP
Привет!
Заметим, что сходства со скриптами на CGI нет. Файл не обязан быть выполнимым или отмеченным любым другим образом. Это просто обычный файл HTML, в котором есть набор специальных тегов, делающих много интересного.
Эта программа чрезвычайно проста, и для создания настолько простой странички даже необязательно использовать PHP. Все что она делает - это выводит «Привет! с использованием функции PHP echo().
Если у вас этот пример не отображает ничего или выводит окно загрузки, или если вы видите весь этот файл в текстовом виде, то весьма вероятно, что ваш Web-сервер не имеет поддержки PHP. Попросите вашего администратора сервера включить такую поддержку. Предложите ему инструкцию по установке - раздел «Установка» данной документации. Если же вы хотите разрабатывать скрипты на PHP дома, то вам в раздел необходимые файлы. Дома можно разрабатывать скрипты с использованием любой операционной системы, но вам понадобится установить соответствующий Web-сервер.
Цель примера - показать формат специальных тегов PHP. В этом примере мы использовали . Таким образом можно сколько угодно раз переходить к коду PHP в файле HTML.
Существует множество текстовых редакторов и интегрированных сред разработки (IDE) , в которых вы можете создавать и редактировать файлы PHP.
Текстовые процессоры (Star Office Writer, Microsoft Word, Abiword и др.) в большинстве случаев не подходят для редактирования файлов PHP. Если вы используете текстовый процессор для создания скриптов на PHP, вы должны быть уверены, что сохраняете файл, как ЧИСТО ТЕКСТОВЫЙ. В противном случае PHP не сможет обработать и выполнить вашу программу.
При написании скриптов PHP с использованием встроенного «Блокнота» Windows
необходимо сохранять файлы с расширением.php. «Блокнот» автоматически добавляет расширение.txt. Для обхода этой проблемы существует несколько методов.
Можно поместить название файла в кавычки (пример: hello.php).
Кроме того, можно выбрать «Все файлы» вместо «Текстовые документы» из ниспадающего списка с типами файлов в окне сохранения. После этого можно вводить имя файла без кавычек.
При объявлении переменных в РНР не требуется явно указывать тип переменной, при этом одна и та же переменная может иметь на протяжении программы разные типы.
Переменная инициализируется в момент присваивания ей значения и существует до тех пор, пока выполняется программа. Т.е., в случае web-страницы это означает, что до тех пор, пока не завершен запрос.
Oбласть видимости переменыхОбласть действия переменной - это контекст, в котором она определена. Большая часть переменных PHP имеет одну область действия. Она охватывает также включенные (included) и необходимые (required) файлы. Например:
$a = 1;
include "b.inc";
Здесь переменная $a будет доступна во включенном скрипте b.inc. Однако в определенных пользователем функциях вводится локальная область действия в пределах функции. Любая переменная, используемая в функции, по умолчанию ограничена локальной областью действия функции. Например:
$a = 1; /* глобальная область действия */
Function Test () {
echo $a; /* ссылка на локальную переменную */
}
Test ();
Этот скрипт ничего не выведет, потому что выржение echo ссылается на локальную версию переменной $a, которой в этой области действия не присвоено значение. Это отличается от языка C, вв котором глобальные переменные C автоматически становятся доступны функциям, если только они специально не переопределены локально. Это может вызвать проблемы, поскольку программист может непреднамеренно изменить глобальную переменную. В PHP глобальные переменные, если они будут использоваться в функции, должны объявляться в этой функции. Вот пример:
$a = 1;
$b = 2;
Function Sum () {
global $a, $b;
$b = $a + $b;
}
Sum ();
echo $b;
Этот скрипт выведет цифру 3. Путем объявления $a и $b глобальными в функции все ссылки на любую из этих переменных будут ссылаться на глобальную версию. число глобальных переменных, которыми может манипулировать функция, не ограничено.
Второй способ получить доступ к глобальным переменным - использовать специальныый определенный PHP массив $GLOBALS. Предыдущие пример можно переписать следующим образом:
$a = 1;
$b = 2;
Function Sum () {
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
Sum ();
echo $b;
массив $GLOBALS
Массив $GLOBALS - это ассоциативным массив, индексами в котором служат имена, а значениями элементов - значения соответствующих глобальных переменных.
Другая важная особенонсть областей действия переменных - статические переменные. Статическая переменная существует только в локальной функции, но не теряет значения после выхода программы из области действия функции. Расмотрим следующий пример:
Function Test () {
$a = 0;
echo $a;
$a++;
}
Эта функция достаточно бесполезна, поскольку каждый раз при вызове она устанавливает значение $a равным 0 и выводит на печать 0. Выражение $a++, увеличивающее значение переменной, ничего не делает, поскольку, как только выполнение функции закончено, переменная $a исчезает. Чтобы создать полезную функцию-счетчик, не теряющую значений, объявим переменную $a как static:
Function Test () {
static $a = 0;
echo $a;
$a++;
}
Теперь при каждом вызове функции Test() она будет выдавать на печать значение переменной $a и увеличивать его.
Кроме того, статические переменные помогают в работе с рекурсивными функциями. Рекурсивной называется функция, которая вызывает сама себя. К написанию рекурсивных функций следует подходить осторожно, поскольку можно сделать цикл бесконечным. Необходимо создать способ прерывания рекурсии. Следующая простая функция ведет счет до 10 с помощью статической переменной $count и останавливает рекурсию:
Function Test () {
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
Test ();
}
$count--;
}
типы переменных
Как уже было сказано, PHP предоставляет определенную гибкость в отношении типов переменных, т.е. с одной и той же переменной на протяжении программы можно работать и как со строкой, и как с числом. Однако, несмотря на это в РНР существуют набор основных типов данных, которые могут явно указываться при работе с переменными:
- integer;
- string;
- boolean;
- double;
- array;
- object;
Целые
Целые числа задаются с использованием следующего синтаксиса:
$a = 1234; # десятичное число
$a = -123; # отрицательное число
$a = 0123; # восьмеричное число (эквивалнетно десятичному 83)
$a = 0123; # шестнадцатеричное число (эквивалнетно десятичному 18)
Размер целого цисла зависит от платформы, обычно максимлаьным может быть знаечение около 2 миллиардов (32 бита со знаком).
Есть функция gettype(), возвращающая тип, который РНР назначил переменной:
В первом случае РНР вернет string, во втором integer.
Числа с плавающей точкой
Числа с плавающей точкой («числа двойной точности») задаются с использованием следующего синтаксиса:
$a = 1.234; $a = 1.2e3;
Размер числа с плавающей точкой зависит от платформы, обычно максимальным может быть число 1.8e308 с точностью около 14 десятичных цифр (64-битный формат IEEE).
Внимание
Обычно простые десятичные дроби типа 0.1 или 0.7 преборазуются в числа двойной точности с некоторой потерей точности. Это может привести к странным результатам: например, функция floor((0.1+0.7)*10) вернет значение 7 вместо ожидаемого 8, потому что результатом внутреннего представления будет число типа 7.9999999999....
Это объясняется тем фактом. что некоторые дроби невозможно точно выразить в десятичной записи с ограниченным числом знаков. Например, 1/3 в десятичной записи принимает вид 0.3333333. . ..
Поэтому никогда н едоверяйте результатам вычислений с плавающей точкой до последней цифры и никогда не проверяйте равенство чисел с плавающей точкой. Если Вам действительон нужна более высокая точность, используйте математические функции с произвольной точностью или функции gmp.
Строки
Строки могут задаваться с использованием одного или двух наборов разделителей.
Если строка заключена в двойные кавычки ("), переменные в строке будут раскрываться (в соответствии с некоторыми ограничениями синтаксического разбора). Как и в C и Perl, при указании специальных символов может использоваться обратный слеш ("\"):
Таблица 6-1 . Символы, кодируемые с использованием обратного слеша
Последовательность | Значение |
\n | перевод строки (LF или 0x0A в кодировке ASCII) |
\r | возврат каретки (CR или 0x0D в кодировке ASCII) |
\t | горизонтальная табуляция (HT или 0x09 в кодировке ASCII) |
\\ | обратный слеш |
\$ | знак доллара |
\" | двойная кавычка |
\{1,3} | последовательность символов, соответствующая регулярному выражению, является символом в восьмеричной нотации |
\x{1,2} | последовательность символов, соответствующая регулярному выражению, является символом в шестнадцатеричной нотации |
Если Вы попытаетесь представить таким образом другой символ, выведены будут и обратный слеш, и сам символ. В PHP 3 при этом будет выдано предупреждение на уровне E_NOTICE. В PHP 4 предупреждающее сообщение не генерируется.
Второй способ отделения строк - использование одиночных кавычек ("""). Если строка заключается в одинарные кавычки, в ней можно использовать только символы "\\" и "\"". Таикм образом Вы смоежет указывать одинарные кавычки и обратные слеши в строка, отделенной одинарными кавычками. Переменные в строке, отделенной одинарными кавычкамИ, разворачиваться не будут.
Еще один способ разделения строк - с помощью синтаксиса документов ("