Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в Веб программирование.doc
Скачиваний:
81
Добавлен:
07.11.2018
Размер:
4.42 Mб
Скачать

Глава 1. Язык php Типы данных

PHP поддерживает 4 скалярных типа данных: boolean (значения true и false), integer (значения целые числа, которые могут быть десятичными, восьмеричными и шестнадцатиричными), float (вещественные числа с плавающей точкой типа double), string(в одинарных и двойных апостофах) и два составных типа: array и object. Кроме этого имеется два специальных типа: resource и NULL. Перед целыми восьмеричными значениями записывается нуль, перед шестнадцатеричными – 0x. Рассмотрим пример

<?php //pr01.php

$a = 10;

$b = 020;//восьмеричное значение

$c = 0x41;//шестнадцатеричное значение

$d=3.62e+2;

printf("%d %o %c %f",$a,$b,$c,$d);

?>

Вывод:

10 20 A 362.000000

Здесь %d – формат для десятичного целого, %o – для восьмеричного, %c – для вывода символа с указанным кодом, %f - для вывода вещественных значений.

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

Имена всех переменных начинаются знаком $. PHP не требует явного определения типа при объявлении переменной, тип переменной определяется по присвоенному ей значению. То есть, если присвоить переменной $p строковое значение, $p становится строкой. Если затем присвоить переменной $p значение целого числа, то $p станет целым.

Для инициализации переменной в PHP ей просто присваивается значение. Кроме переменных могут быть использованы поименованные константы, объявленные в операторе define() без знака $. Рассмотрим пример:

<?php //pr2.php

define("d",5,true);

$a = "Добро пожаловать ";

$b = "в PHP";

$c = 4;

$c++;

echo "$a$b$c"; //получим - Добро пожаловать в PHP5

print d;//Вывод константы 5

$p=NULL;

print var_dump($p);

print gettype($a);

?>

Вывод:

Добро пожаловать в PHP55NULL string

Комментарии в PHP используются, как и в C++:

/*многострочный комментарий */ или

// однострочный комментарий или

#еще один однострочный комментарий.

Строки

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

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

<?php //pr3.php

$name = 'Domine?';

$name_1 = "Quo vadis, $name";

$name_2 = ' Quo vadis, $name';

echo "$name_1"; // выведет - Quo vadis, Domine?

echo "$name_2"; // выведет - Quo vadis, $name

?>

Для строк в двойных кавычках PHP поддерживает также больше так называемых экранированных символов, которые могут встречаться среди символов строки: \n - перенос строки, \r- возврат каретки , \t- горизонтальная табуляция, \\- обратная косая черта, \$- знак доллара, \\"- двойная кавычка, \код – код символа.

Например:

$s=”\x41- это символ ‘a’ ”;

$st=” можно использовать \” управляющий \” символ”;

Самым важным свойством строк в двойных кавычках является обработка переменных, находящихся в строках.

Третий способ определения строк - это использование heredoc-синтаксиса ("<<<"). После <<< указывается идентификатор, затем идет строка, а потом этот же идентификатор, закрывающий строку. Закрывающий идентификатор должен начинаться в первом столбце строки. Строка с закрывающим идентификатором не содержит других символов, за исключением, точки с запятой (;). Это означает, что идентификатор не должен вводиться с отступом и не может быть никаких пробелов или знаков табуляции до или после точки с запятой. Первым символом перед закрывающим идентификатором должен быть символ новой строки. Например, \r. Heredoc-текст ведет себя так же, как и строка в двойных кавычках, при этом их не имея. Это означает, что нет необходимости экранировать кавычки в heredoc, но по-прежнему можно использовать управляющие последовательности. Пример определения heredoc-строки:

<?php

$name = "Max";

$str = <<<DEMO

Hello $name! <br/>

This is a demo message

with heredoc.

DEMO;

echo $str;

?>

Вывод:

Hello Max! This is a demo message with heredoc.

Если строка определяется в двойных кавычках, либо при помощи heredoc, переменные внутри нее обрабатываются. Существует два типа синтаксиса: простой и сложный. В простом синтаксисе если интерпретатор встречает знак ($), он захватывает столько символов, сколько можно, чтобы сформировать правильное имя переменной. Чтобы точно определить конец имени, заключайте имя переменной в фигурные скобки.

<?php

$beer = 'Речицкое';

echo "$beer's taste is great"; /* работает, 's - неверный символ для имени переменной */

echo "He drank some $beers"; /* не работает, 's' это верный символ для имени переменной*/

echo "He drank some ${beer}s"; // работает

echo "He drank some {$beer}s"; // работает

?>

Сложный (фигурный) синтаксис позволяет использовать сложные выражения.

Фактически, вы можете включить любое значение, находящееся в пространстве имени в строке с этим синтаксисом. Вы просто записываете выражение таким же образом, как и вне строки, а затем заключаете его в { и }. Поскольку вы не можете экранировать '{', этот синтаксис будет распознаваться только когда $ следует непосредственно за {. Поясняющий пример:

<?php

// Давайте покажем все ошибки

error_reporting(E_ALL);

$great = 'fantastic';

// Не работает, выведет: This is { fantastic}

echo "This is { $great}";

// Работает, выведет: This is fantastic

echo "This is {$great}";

echo "This is ${great}";

// Работает

echo "Этот квадрат шириной {$square->width}00 сантиметров.";

// Работает

echo "Это работает: {$arr[4][3]}";

// Это неверно по той же причине, что и $foo[bar] неверно вне

// строки. Другими словами, это по-прежнему будет работать,

// но поскольку PHP сначала ищет константу foo, это вызовет

// ошибку уровня E_NOTICE (неопределенная константа).

echo "Это неправильно: {$arr[foo][3]}";

// Работает. При использовании многомерных массивов, внутри

// строк всегда используйте фигурные скобки

echo "Это работает: {$arr['foo'][3]}";

// Работает.

echo "Это работает: " . $arr['foo'][3];

echo "Вы даже можете записать {$obj->values[3]->name}";

echo "Это значение переменной по имени $name: {${$name}}";

?>

В PHP существуют так называемые обратные ковычки (‘), унаследованные из языка Perl. Заключенные в них строки воспринимаются и выполняются как команды операционной системы. Например

<?php

echo ‘dir’; ?>