Переменные и типы данных

Печать: Шрифт: Абв Абв Абв
admin 24 Февраля 2006 в 23:06:19
Переменные и типы данных

Типы данных составляют основу любого языка программирования и являются средством, с помощью которого программист представляет разные типы информации. В РНР поддерживаются шесть основных типов данных:

  • целые числа;

  • вещественные числа;

  • строки;

  • массивы;

  • объекты;

  • логические величины.

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

    Целые числа

    Целое число не имеет дробной части и представляется последовательностью из одной или нескольких цифр. Примеры целых чисел:

    5

    591

    52

    Восьмеричная и шестнадцатеричная запись

    В РНР поддерживается запись целых чисел в восьмеричной (по основанию 8) и шестнадцатеричной (по основанию 16) системах счисления. Восьмеричные числа начинаются с цифры 0, после которой следует серия цифр от 0 до 7. Примеры:

    0422

    0534

    Шестнадцатеричные целые числа имеют префикс 0х или 0Х и могут состоять из цифр от 0 до 9 и букв от а (А) до f (F). Примеры:

    0x3FF

    0x22abc

    Вещественные числа

    Вещественные числа (числа с плавающей точкой) отличаются от целых наличием дробной части. Они используются для представления значений, требующих повышенной точности, — например, температур или денежных величин. В РНР поддерживаются два вещественных формата: стандартная и научная (экспоненциальная) запись.

    Стандартная запись

    Стандартная запись удобна для представления типичных вещественных чисел — скажем, денежных величин. Примеры:

    12.45

    98.6

    Научная запись

    Научная запись лучше подходит для представления очень больших и очень малых чисел — скажем, межпланетных расстояний или размеров атомов. Примеры:

    Зе8

    5.9736е24

    Строковые значения

    Строкой (string) называется последовательность символов, которая рассматривается как единое целое, но при этом обеспечивает доступ к отдельным символам. Примеры строк:

    thesaurus

    49ers

    abc

    &%/$#

    Обратите внимание: в РНР не поддерживается символьный тип данных. Строковый тип может рассматриваться как единое представление для последовательностей, состоящих из одного или нескольких символов.

    Строковое присваивание

    Строки делятся на две категории в зависимости от типа ограничителя — они могут ограничиваться парой кавычек (" ") или апострофов (' '). Между этими категориями существуют два принципиальных различия. Во-первых, имена переменных в строках, заключенных в кавычки, заменяются соответствующими значениями, а строки в апострофах интерпретируются буквально, даже если в них присутствуют имена переменных,

    Два следующих объявления дают одинаковый результат:


    <?
    $food
    = "meatloaf";
    $food = 'meatloaf';
    ?>


    Однако результаты следующих объявлений сильно различаются:
    <?
    $sentence
    = "My favorite food is $food";
    $sentence2 = 'My favorite food is $food';
    ?>


    Переменной $sentence присваивается строка

    My favorite food is meatloaf.

    Обратите внимание: переменная $food автоматически интерпретируется. С другой стороны, переменной $sentence2 присваивается строка

    My favorite food is $food.

    В отличие от переменной $sentence, в $sentence2 осталась не интерпретированная переменная $food. Различия обусловлены использованием кавычек и апострофов при присваивании переменным $sentence и $sentence2.

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

    Служебные символы в строках


    -Новая строка

    -Возврат курсора
    -Горизонтальная табуляция
    \ -Обратная косая черта
    $ -Знак доллара
    " -Кавычка
    [0-7]{1,3} -Восьмеричная запись числа (в виде регулярного выражения)
    x[0-9A-Fa-f]{l,2} -Шестнадцатиричная запись числа (в виде регулярного выражения)

    Второе принципиальное различие заключается в том, что в строках, заключенных в кавычки, распознаются все существующие служебные символы, а в строках, заключенных в апострофы, — только служебные символы «\» и «». Следующий пример наглядно демонстрирует различия между присваиванием строк, заключенных в кавычки и апострофы:
    <?
    $double_list
    = "item1
    item2
    item2"
    ;
    $single_list = 'item1
    item2
    item2'
    ;

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

    Синтаксис встроенной документации

    Второй вариант синтаксиса ограничения строк, представленный в HTML4, называется встроенной документацией (here doc). В этом варианте синтаксиса строка начинается с символов <<<, за которыми следует некоторый идентификатор по вашему выбору, затем строка, присваиваемая переменной. Конструкция заканчивается вторым экземпляром того же идентификатора. Пример:
    <?
    $paragraph
    = <<<DELIM

    This is a string that

    Will be interpreted exactly

    As it is written in the

    variable assignment,

    DELIM;
    ?>
    Выбранный идентификатор не должен присутствовать в присваиваемой строке. Более того, первый символ завершающего идентификатора должен находиться в первом столбце строки, завершающей конструкцию.

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

    К отдельным символам строки можно обращаться как к элементам массива с последовательной нумерацией (см. следующий раздел). Пример:
    <?
    $sequence_number
    = "04efgh";

    $letter = Ssequence_number[4];
    ?>


    Переменной $ letter будет присвоено значение g. Как вы узнаете из следующего раздела, в РНР нумерация элементов массивов начинается с 0. Соответственно, выражение $sequence_number[l] будет равно 4.
    Добавить сообщение
    Чтобы добавлять комментарии зарeгиcтрирyйтeсь