Урок 8

Урок 8. Типы данных, переменные и операции

На данном уроке мы рассмотрим:

  1. Типы данных

    • Тип boolean

    • Тип integer (целые)

    • Тип float

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

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

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

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

    • Тип Null

  2. Переменные

    • Переменные

    • Константа

  3. Операции

Типы данных

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

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

  • boolean (логический);

  • integer (целый);

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

  • string (строковый).

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

  • array (массив);

  • object (объект).

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

  • resource (ресурс);

  • NULL.

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

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

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

Например,

$test = True;

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

Тип integer (целые)

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

Например,

# десятичное число

$a = 1234;

# отрицательное число

$a = -123;

?>

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

Например,

# шестнадцатеричное число (эквивалентно 26 в десятичной системе)

$a = 0x1A;

echo $a;

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

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

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

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

$a = 1.234;

$b = 1.2e3;

$c = 7E-10;

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

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

Пример строковой переменной:

$a = "Это текст, записанный в строковую переменную";

echo $a; //Выводит 'Это текст, записанный в строковую переменную'


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

Массив в PHP - это упорядоченный набор данных, в котором установлено соответствие между значением и ключом.

Индекс (ключ) служит для однозначной идентификации элемента внутри массива. В одном массиве не может быть двух элементов с одинаковыми индексами. PHP позволяет создавать массивы любой сложности.

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

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

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

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

Тип Null

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

  • ей была присвоена константа NULL ( $var = NULL );

  • ей еще не было присвоено какое-либо значение;

  • она была удалена с помощью unset ().

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

Переменные

Переменные

Переменная в PHP обозначается знаком доллара, за которым следует ее имя.

Например:

$my_var

Имя переменной чувствительно к регистру, т.е. переменные $car и $Car различны.

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

В отличие от большинства языков программирования в РНР нет строгого контроля типов. Переменная объявляется в любом месте и становится глобальной для всего скрипта.

Константа

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

В РНР константы определяются функцией define(). Эта функция имеет следующий формат:

define ($name, $value, $case_sen), где:

$name - имя константы;

$value - значение константы;

$case_sen - необязательный параметр логического типа, указывающий, следует ли учитывать регистр букв (true) или нет (false).

Различия между константами и переменными:

  • У констант нет приставки в виде знака доллара ($);

  • Константы можно определить только с помощью функции define(), а не присваиванием значения;

  • Константы могут быть определены и доступны в любом месте без учета области видимости;

  • Константы не могут быть определены или аннулированы после первоначального объявления; и

  • Константы могут иметь только скалярные значения.

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

Для проверки существования константы можно использовать функцию defined(). Данная функция возвращает true, если константа объявлена. Приведем пример:

// Объявляем константу pi

define("pi",3.14,true);

if (defined("pi")==true) echo "Константа pi объявлена!";

// Скрипт выведет 'Константа pi объявлена!'


Операции

  1. Арифметические операции

    • a + b – сложение;

    • a - b – вычитание;

    • a * b – умножение;

    • a/ b – деление (возвращает целое число, если оба операнда целые);

    • a % b – остаток от деления a на b(работает только с целыми числами).

  2. Например,
    $a=8;
    $b=3;
    $c=$a % $b;
    echo $c;

  1. Строковые операции

    • a.b– слияние строк a и b;

    • a[n]– символ строки в позиции n.

  2. Операции присваивания
    Основным оператором из этой группы операций является оператор присваивания «=». Данный оператор говорит интерпретатору, что значение правого выражения должно быть присвоено переменной слева.
    Например:
    $a = ($b = 4) +5;
    После этого :
    $a равно 9, $b равно 4.
    <Помимо этого оператора, существует ещё множество комбинированных по одному на каждую строковую и битовую операцию.
    Например:
    $message = Gold;
    $message.= ring;
    echo $message;
    Как результат:
    $n равно 7, $message равно «Goldring».

  1. Операции инкремента и декремента

    • $a++ - увеличение переменной $a на 1;

    • $a-- - уменьшение переменной $a на 1;

  2. Битовые операции
    Эти операции предназначены для работы (установки/снятия/проверки) групп битов в целой переменной. Биты целого числа – это отдельные разряды того же самого числа, записанного в двоичной системе счисления. Если переменная нецелая, то она вначале округляется, а затем к ней применяются перечисленные ниже операторы.

    • a & b– результат – число с установленными битами, которые выставлены и в a, и в b одновременно;

    • a | b – результат – число с установленными битами, которые выставлены либо в a, либо в b, либо одновременно;

    • ~ a – результат, у которого на месте единиц в a стоят нули, и наоборот;

    • a << b– результат – число, полученное поразрядным сдвигом a на b битов влево;

    • a>> b – результат – число, полученное поразрядным сдвигом a на b битов вправо.

  3. Операции сравнения
    Эти операции вне зависимости от типов операндов всегда возвращают одно из двух значений: true или false. Итак:

    • a = = b – истина, если a равно b;

    • a ! = b – истина, если a не равно b;

    • a < b – истина, если a меньше b;

    • a > b – истина, если a больше b;

    • a <= b – истина, если a не больше b;

    • a >= b – истина, если a не меньше b.

  4. Сравнение сложных переменных
    В PHP 5 сравнивать на равенство можно не только скалярные переменные (т.е. строки и числа), но также массивы и объекты. При этом «==» сравнивает, например, массивы весьма «либерально»:
    $x = array(1, 2, “3”);
    $y= array(1, 2, 3);
    printf($x= = $y);
    Данный пример проверяет, равны ли два массива (и выдает положительный ответ, несмотря на то, что последний элемент одного из них – строка, а другого – число). Если оператор «==» сталкивается с массивом, он идет «вглубь» и сверяет также каждую пару переменных. Делает он это при помощи самого себя (рекурсивно), выполняя, в частности, все правила сравнения логических выражений, которые были ранее описаны. Рассмотрим ещё один пример:
    $x = array(1, 2, true);
    $y = array(1, 2, 3);
    printf($x = = $y);
    На первый взгляд, массивы сильно различаются. Но вспомним, что с точки зрения PHP 3 == true. Поэтому данные массивы считаются равными между собой. Подводя итог, можно сделать такой вывод: две переменные равны в смысле «==», если «на глаз» они хранят одинаковые величины.

  5. Операция эквивалентности
    Оператор эквивалентности был введен ещё в PHP 4 и обозначается тройным знаком равенства «===». Этот оператор не только сравнивает переменные, но и сопоставляет их типы. Приведем пример использования этого оператора:
    $obj1 = 3;
    $obj2 = “3”;
    printf($obj1 = = = $obj2);
    При помощи оператора эквивалентности можно сравнивать как скалярные переменные, так и массивы и объекты (для эквивалентности переменные должны полностью совпадать). Для оператора «===» существует антипод – оператор «!==».

  6. Логические операции
    Для логических выражений PHP (т.е. переменных типа boolean) предопределены логические операции. В таблице представлены логические операции, предопределенные в PHP.

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

Вопросы и задания!

  1. Какие типы данных существуют на языке PHP. Сравните их с типами данных на JavaScript.

  2. Объявите переменные чытырех скалярных типов и выведите их с помощью метода echo, как были показаны на примерах.

  3. Объявите переменные $a и $b. Примените к ним все арифметические операции. Выведите ответы.

  4. Объявите переменные со своим именем и фамилией, проделайте операцию комбинированной строковой операции.