→ Пошук по сайту       Увійти / Зареєструватися
Знання Мова програмування PHP Основы синтаксиса

Типы данных

Компетенція Програмування на PHP

Типы данных

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

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

  • boolean (логический);
  • integer (целый);
  • float (с плавающей точкой);
  • string (строковый).

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

  • array (массив);
  • object (объект).

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

  • resource (ресурс);
  • NULL.

В PHP не принято явное объявление типов переменных. Предпочтительнее, чтобы это делал сам интерпретатор во время выполнения программы в зависимости от контекста, в котором используется переменная. Рассмотрим по порядку все перечисленные типы данных.

Тип boolean (булев или логический тип)

Этот простейший тип выражает истинность значения, то есть переменная этого типа может иметь только два значения – истина TRUE или ложь FALSE.

Чтобы определить булев тип, используют ключевое слово TRUE или FALSE. Оба регистронезависимы.

<?php
$test = True;
?>
Пример 2.5. Логический тип

Логические переменные используются в различных управляющих конструкциях (циклах, условиях и т.п., более подробно речь о них пойдет в одной из следующих лекций). Иметь логический тип, т.е. принимать только два значения, истину или ложь, могут также и некоторые операторы (например, оператор равенства). Они также используются в управляющих конструкциях для проверки каких-либо условий. Например, в условной конструкции проверяется истинность значения оператора или переменной и в зависимости от результата проверки выполняются те или иные действия. Здесь условие может быть истинно или ложно, что как раз и отражает переменная и оператор логического типа.

<?php
// Оператор '==' проверяет равенство
// и возвращает 
// булево значение
if ($know == False) { // если $know 
                      // имеет значение 
                      // false
echo"Изучай PHP!";  
}
if (!$know) { // то же самое, что
              // и выше, т.е. проверка 
              // имеет ли $know значение
              // false
echo"Изучай PHP!";  
}
/* оператор == проверяет, совпадает ли
   значение переменной $action со строкой
   "Изучить PHP". Если совпадает, то
   возвращает true, иначе – false.
   Если возвращено true, то выполняется
   то, что внутри фигурных скобок */
if ($action == "Изучить PHP")
{ echo"Начал изучать"; }
?>
Пример 2.6. Использование логического типа

Тип integer (целые)

Этот тип задает число из множества целых чисел Z = {..., -2, -1, 0, 1, 2, ...}. Целые могут быть указаны в десятичной, шестнадцатеричной или восьмеричной системе счисления, по желанию с предшествующим знаком «-» или «+».

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

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

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

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

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

Тип float (числа с плавающей точкой)

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

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

Размер целого зависит от платформы, хотя максимум, как правило, ~1.8e308 с точностью около 14 десятичных цифр.

Тип string (строки)

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

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

  • с помощью одинарных кавычек;
  • с помощью двойных кавычек;
  • heredoc-синтаксисом.
Одинарные кавычки

Простейший способ определить строку – это заключить ее в одинарные кавычки «'». Чтобы использовать одинарную кавычку внутри строки, как и во многих других языках, перед ней необходимо поставить символ обратной косой черты «\», т. е. экранировать ее. Если обратная косая черта должна идти перед одинарной кавычкой либо быть в конце строки, необходимо продублировать ее «\\'».

Если внутри строки, заключенной в одинарные кавычки, обратный слэш «\» встречается перед любым другим символом (отличным от «\» и «'» ), то он рассматривается как обычный символ и выводится, как и все остальные. Поэтому обратную косую черту необходимо экранировать, только если она находится в конце строки, перед закрывающей кавычкой.

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

<?php
echo 'Также вы можете вставлять в строки
    символ новой строки таким образом,
    поскольку это нормально';

// Выведет: Чтобы вывести ' надо
// перед ней поставить \
echo 'Чтобы вывести \' надо перед' .
     'ней поставить \\';
// Выведет: Вы хотите удалить C:\*.*?
echo 'Вы хотите удалить C:\\*.*?';
// Выведет: Вы хотите удалить C:\*.*?
echo 'Вы хотите удалить C:\*.*?';
// Выведет: Это не вставит: \n
// новую строку
echo 'Это не вставит: \n новую строку';
// Выведет: Переменные $expand также
// $either не подставляются
echo 'Переменные $expand также $either' .
     'не подставляются';
?> 
Пример 2.7. Использование управляющих последовательностей
Двойные кавычки

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

Таблица 2.7. Управляющие последовательности
Последовательность Значение
\n Новая строка (LF или 0x0A (10) в ASCII)
\r Возврат каретки (CR или 0x0D (13) в ASCII)
\t Горизонтальная табуляция (HT или 0x09 (9) в ASCII)
\\ Обратная косая черта
\$ Знак доллара
\" Двойная кавычка

Повторяем, если вы захотите экранировать любой другой символ, обратная косая черта также будет напечатана!

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

Heredoc

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

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

<?php
$str = <<<EOD
Пример строки,охватывающей несколько
строчек, с использованием
heredoc-синтаксиса
EOD;
// Здесь идентификатор – EOD. Ниже
// идентификатор EOT
$name = 'Вася';
echo <<<EOT
Меня зовут "$name". 
EOT;
// это выведет "Меня зовут Вася."
?> 
Пример 2.8. Использование heredoc-синтаксиса

Замечание: Поддержка heredoc была добавлена в PHP 4.

Тип array (массив)

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

Определить массив можно с помощью конструкции array() или непосредственно задавая значения его элементам.

Определение при помощи array()
array ([key] => value,
       [key1] => value1, ... )

Языковая конструкция array() принимает в качестве параметров пары ключ => значение, разделенные запятыми. Символ => устанавливает соответствие между значением и его ключом. Ключ может быть как целым числом, так и строкой, а значение может быть любого имеющегося в PHP типа. Числовой ключ массива часто называют индексом. Индексирование массива в PHP начинается с нуля. Значение элемента массива можно получить, указав после имени массива в квадратных скобках ключ искомого элемента. Если ключ массива представляет собой стандартную запись целого числа, то он рассматривается как число, в противном случае – как строка. Поэтому запись $a["1"] равносильна записи $a[1], так же как и $a["-1"] равносильно $a[-1].

<?php
$books = array ("php" =>
                "PHP users guide",
                12 => true);
echo $books["php"];
//выведет "PHP users guide"
echo $books[12];     //выведет 1
?> 
Пример 2.9. Массивы в PHP

Если для элемента ключ не задан, то в качестве ключа берется максимальный числовой ключ, увеличенный на единицу. Если указать ключ, которому уже было присвоено какое-то значение, то оно будет перезаписано. Начиная с PHP 4.3.0, если максимальный ключ – отрицательное число, то следующим ключом массива будет ноль (0).

<?php
// массивы $arr и $arr1 эквиваленты
$arr = array(5 => 43, 32, 56, "b" => 12);
$arr1 = array(5 => 43, 6 => 32,
              7 => 56, "b" => 12);
?> 
Пример 2.10. Массивы в PHP

Если использовать в качестве ключа TRUE или FALSE, то его значение переводится соответственно в единицу и ноль типа integer. Если использовать NULL, то вместо ключа получим пустую строку. Можно использовать и саму пустую строку в качестве ключа, при этом ее надо брать в кавычки. Так что это не то же самое, что использование пустых квадратных скобок. Нельзя использовать в качестве ключа массивы и объекты.

Определение с помощью синтаксиса квадратных скобок

Создать массив можно, просто записывая в него значения. Как мы уже говорили, значение элемента массива можно получить с помощью квадратных скобок, внутри которых нужно указать его ключ например, $book["php"]. Если указать новый ключ и новое значение например, $book["new_key"]="new_value", то в массив добавится новый элемент. Если мы не укажем ключ, а только присвоим значение $book[]="new_value", то новый элемент массива будет иметь числовой ключ, на единицу больший максимального существующего. Если массив, в который мы добавляем значения, еще не существует, то он будет создан.

<?
$books[key]= value; // добавили в массив
                    // $books значение 
                    // value с ключом key
$books[] = value1; /* добавили в массив
                      значение value1 с
                      ключом 13, поскольку
                      максимальный ключ у
                      нас был 12 */
?>

Для того чтобы изменить конкретный элемент массива, нужно просто присвоить ему с его ключом новое значение. Изменить ключ элемента нельзя, можно только удалить элемент (пару ключ/значение) и добавить новую. Чтобы удалить элемент массива, нужно использовать функцию unset().

<?php
$books = array ("php" =>
                "PHP users guide",
                12 => true);

$books[] =
 "Book about Perl"; // добавили элемент
                    // с ключом (индексом)
                    // 13 это эквивалентно 
                    // $books[13] =
                    // "Book about Perl";
$books["lisp"] =
 123456; /* Это добавляет к массиву новый
            элемент с ключом "lisp" и
            значением 123456 */
unset($books[12]); // Это удаляет элемент
                   // c ключом 12 из массива 
unset ($books); // удаляет массив полностью
?> 

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

<?php
$arr =
 array ("a","b","c"); /* Создаем массив
                         со значениями
                         "a", "b" и "c".
                         Поскольку ключи
                         не указаны, они
                         будут 0,1,2
                         соответственно */
print_r($arr); // выводим массив (и ключи,
               // и значения)
unset($arr[0]);
unset($arr[1]);
unset($arr[2]); 
         // удаляем из него все значения 
print_r($arr);  // выводим массив (и ключи,
                // и значения)
$arr[] = "aa";  // добавляем новый элемент
                // в массив. 
                // Его индексом (ключом)
                // будет 3, а не 0
print_r($arr);

$arr =
 array_values($arr); // переиндексируем
                     // массив 
$arr[] = "bb"; // ключом этого элемента
               // будет 1
print_r($arr);
?>
Пример 2.11. Переиндексация массива

Результатом работы этого скрипта будет:

Array ( [0] => a [1] => b [2] => c ) 
Array ( ) 
Array ( [3] => aa ) 
Array ( [0] => aa [1] => bb ) 

Тип object (объекты)

Объектытип данных, пришедший из объектно-ориентированного программирования (ООП). Согласно принципам ООП, класс – это набор объектов, обладающих определенными свойствами и методами работы с ним, а объект соответственно – экземпляр класса. Например, программисты – это класс людей, которые пишут программы, изучают компьютерную литературу и, кроме того, как все люди, имеют имя и фамилию. Теперь, если взять одного конкретного программиста, Васю Иванова, то можно сказать, что он является объектом класса программистов, обладает теми же свойствами, что и другие программисты, тоже имеет имя, пишет программы и т.п.

В PHP для доступа к методам объекта используется оператор ->. Для инициализации объекта используется выражение new, создающее в переменной экземпляр объекта.

<?php
//создаем класс людей
class Person
{
// метод, который обучает человека PHP
    function know_php()
        {
            echo "Теперь я знаю PHP";
        }    
}
$bob = new Person; // создаем объект
                   // класса человек
$bob -> know_php(); // обучаем его PHP
?>
Пример 2.12. Объекты в PHP

Более подробно реализацию принципов ООП в языке PHP мы рассмотрим в одной из следующих лекций.

Тип resource (ресурсы)

Ресурс – это специальная переменная, содержащая ссылку на внешний ресурс (например, соединение с базой данных). Ресурсы создаются и используются специальными функциями (например, mysql_connect(), pdf_new() и т.п.).

Тип Null

Специальное значение NULL говорит о том, что переменная не имеет значения.

Переменная считается NULL, если:

  • ей была присвоена константа NULL ($var = NULL);
  • ей еще не было присвоено какое-либо значение;
  • она была удалена с помощью unset().

Существует только одно значение типа NULL – регистронезависимое ключевое слово NULL.

    © INTUIT.ru. Автор: Н.В. Савельева. Курс размещен по договоренности с администрацией INTUIT.ru
загрузка...
Теми розділу
Сторінки, близькі за змістом