PHP: типы переменных
Основным способом хранения информации внутри PHP-программы является использование переменных.
Вот наиболее важные сведения о переменных в PHP:
- Все переменные обозначаются открывающим знаком доллара ( $ ).
- Значение переменной — это значение ее последнего присвоения.
- Переменные присваиваются с помощью оператора = , при этом слева указывается переменная, а справа — выражение, являющееся результатом.
- Переменные могут, но не обязательно должны быть объявлены перед присвоением.
- Переменные в PHP не имеют собственных типов: заранее неизвестно, будет ли переменная использоваться для хранения числа или строки символов.
- Переменные, используемые до присвоения, имеют значения по умолчанию.
- PHP хорошо справляется с автоматическим преобразованием типов из одного в другой, когда это необходимо.
- Переменные PHP являются Perl-подобными.
В PHP используются восемь типов данных для создания переменных:
- Целые — числа без десятичной точки, например: 4195 .
- Числа двойной точности — числа с плавающей запятой, например: 3.14159 или 49.1 .
- Булевы — имеющие только два возможных значения: true или false .
- NULL (информационный нуль) — специальный тип, который имеет только одно значение: NULL (нулевое).
- Строки — последовательности символов, например: PHP supports string operations
- Массивы — именованные и индексированные коллекции различных значений.
- Объекты — экземпляры определенных программистом классов, которые могут упаковывать как различные типы значений, так и функции, специфичные для данного класса.
- Ресурсы — специальные переменные, которые содержат ссылки на внешние ресурсы (например, соединения с базой данных).
Первые пять типов являются простыми, а следующие два (массивы и объекты) — составными. Составные типы, в отличие от простых, могут упаковывать различные произвольные значения произвольного типа данных.
Рассмотрим пока простые типы данных. Массивы и объекты будут описаны отдельно.
Целые числа
Это числа без десятичной точки, например, 4195 . Это самый простой тип данных, соответствующий простым целым числам, как положительным, так и отрицательным. Целые числа можно присваивать переменным или использовать в выражениях, например, так:
$int_var = 12345;
$another_int = -12345 + 12345;
Целое число может быть в десятичном, восьмеричном и шестнадцатеричном формате. Десятичный формат используется по умолчанию, восьмеричные целые числа помечаются начальным 0, а шестнадцатеричные числа — начальным 0x.
Для большинства распространенных платформ наибольшее целое число равно 2³¹-1 (или 2 147 483 647), а наименьшее (наибольшее отрицательное) целое число равно — (2³¹-1) (или -2,147,483,647).
Числа двойной точности
Примерами такого типа данных являются 3.14159 или 49.1. По умолчанию числа двойной точности записываются с минимальным количеством необходимых знаков после запятой. Например:
$many = 2.2888800;
$many_2 = 2.2111200;
$few = $many + $many_2;
print("$many + $many_2 = $few
");
?>
Такая запись приводит к следующему выводу в браузере:
2.28888 + 2.21112 = 4.5
Булевы данные
Данные этого типа имеют только одно из двух возможных значений: истинное или ложное. PHP предоставляет пару констант, специально предназначенных для использования в качестве булевых значений: TRUE (истинное) и FALSE (ложное), которые можно использовать следующим образом:
if (TRUE)
print("This will always print
");else
print("This will never print
");
Интерпретация других типов данных как булевых
Вот правила для определения истинности любого значения, не относящегося к булевому типу.
- Если значение является числом: оно ложно, если точно равно нулю, и истинно в противном случае.
- Если значение является строкой: оно ложно, если строка пуста (содержит ноль символов) или является строкой “0”, и истинно в противном случае.
- Значения типа NULL всегда ложны.
- Если значение является массивом: оно ложно, если не содержит других значений, и истинно в противном случае. Для объекта содержать значение означает иметь переменную-член, которой присвоено значение.
- Допустимые ресурсы истинны (хотя некоторые функции, возвращающие ресурсы в случае успеха, возвращают FALSE в случае неудачи).
- Числа двойной точности не используются в качестве булевых значений.
Каждая из следующих переменных имеет истинное значение, встроенное в ее имя, когда она используется в булевом контексте.
$true_num = 3 + 0.14159;
$true_str = "Tried and true"
$true_array[49] = "An array element";
$false_array = array();
$false_null = NULL;
$false_num = 999 - 999;
$false_str = "";
NULL
NULL — это особый тип, который имеет только одно значение: NULL . Чтобы присвоить переменной значение NULL , просто определите ее следующим образом:
$my_var = NULL;
Специальная константа NULL по соглашению пишется с заглавной буквы, но на самом деле она не чувствительна к регистру — с таким же успехом вы могли бы ввести:
$my_var = null;
Переменная, которой присвоено значение NULL , обладает следующими свойствами:
- оценивается как FALSE в булевом контексте.
- возвращает FALSE при проверке с помощью функции IsSet() .
Строки
Строки представляют собой последовательности символов, например “PHP поддерживает операции со строками”. Ниже приведены примеры допустимых строк:
$string_1 = "Строка в двойных кавычках";
$string_2 = 'Более длинная строка в одинарных кавычках';
$string_39 = "Строка, содержащая тридцать девять символов";
$string_0 = ""; // строка с нулевым количеством символов
Строки в одинарных кавычках обрабатываются почти буквально, тогда как строки в двойных кавычках заменяют переменные их значениями, а также особым образом интерпретируют определенные последовательности символов.
$variable = "name";
$literally = 'My $variable will not print!';
print($literally);
print "
";
$literally = "My $variable will print!";
print($literally);
?>
Это приведет к следующему результату:
My $variable will not print!
My name will print
Искусственных ограничений на длину строк не существует — в пределах доступной памяти вы должны иметь возможность создавать произвольно длинные строки.
Строки, разделенные двойными кавычками (как в “this”), предварительно обрабатываются PHP двумя следующими способами −
- Определенные последовательности символов, начинающиеся с обратной косой черты ( \ ), заменяются специальными символами
- Имена переменных (начинающиеся с $ ) заменяются строковыми представлениями их значений.
Замена экранирующих последовательностей:
- \n заменяется символом новой строки;
- \r заменяется символом возврата каретки;
- \t заменяется символом табуляции;
- \$ заменяется знаком доллара ( $ );
- \” заменяется одинарными двойными кавычками ( “ );
- \\\ заменяется одинарной обратной косой чертой ( \ ).
Here Document
Вы можете присвоить несколько строк одной строковой переменной, используя here document:
$channel =Что на ужин?
http://menu.example.com/Выберите, что съесть вечером.
_XML_;
echo Здесь используется синтаксис "here document" для вывода
нескольких строк с интерполяцией переменной. Обратите внимание на
то, что терминатор документа here должен находиться на строке с
точкой с запятой. Никаких лишних пробелов! END;
print $channel;
?>
Это приведет к следующему результату:
Здесь используется синтаксис "here document" для вывода
нескольких строк с интерполяцией переменной. Обратите внимание на то, что терминатор документа here должен находиться на
строке с точкой с запятой. Никаких лишних пробелов!
Что на ужин?
http://menu.example.com/Выберите, что съесть вечером
Область видимости переменной
Область видимости может быть определена как диапазон доступности переменной для программы, в которой она объявлена. Переменные PHP могут принадлежать к одному из четырех типов области видимости:
- локальные переменные;
- параметры функции;
- глобальные переменные;
- статические переменные.
Именование переменных
Правила именования переменной:
- Имена переменных должны начинаться с буквы или символа подчеркивания.
- Имя переменной может состоять из цифр, букв, знаков подчеркивания, но вы не можете использовать такие символы, как + , — , % , ( , ) . & , и т.п.
Для переменных нет ограничений по размеру.
- Ключевое слово static в PHP
- Как использовать PHP для вывода данных?
- PHP: введение и настройка среды
Переменные
Синтаксис объявления переменных в C# выглядит следующим образом:
int i;
Объявить можно переменную любого действительного типа. Важно подчеркнуть, что возможности переменной определяются ее типом. Например, переменную типа bool нельзя использовать для хранения числовых значений с плавающей точкой. Кроме того, тип переменной нельзя изменять в течение срока ее существования. В частности, переменную типа int нельзя преобразовать в переменную типа char.
Все переменные в C# должны быть объявлены до их применения. Это нужно для того, чтобы уведомить компилятор о типе данных, хранящихся в переменной, прежде чем он попытается правильно скомпилировать любой оператор, в котором используется переменная. Это позволяет также осуществлять строгий контроль типов в C#.
Инициализация переменной
Задать значение переменной можно, в частности, с помощью оператора присваивания. Кроме того, задать начальное значение переменной можно при ее объявлении. Для этого после имени переменной указывается знак равенства (=) и присваиваемое значение. Если две или более переменные одного и того же типа объявляются списком, разделяемым запятыми, то этим переменным можно задать, например, начальное значение. Ниже приведена общая форма инициализации переменной:
int i = 10; // задаем целочисленной переменной i значение 10 char symbol = 'Z'; // инициализируем переменную symbol буквенным значением Z float f = 15.7F; // переменная f инициализируется числовым значением 15.7 int x = 5, y = 10, z = 12; // инициализируем несколько переменных одного типа
Инициализация переменных демонстрирует пример обеспечения безопасности C#. Коротко говоря, компилятор C# требует, чтобы любая переменная была инициализирована некоторым начальным значением, прежде чем можно было обратиться к ней в какой-то операции. В большинстве современных компиляторов нарушение этого правила определяется и выдается соответствующее предупреждение, но «всевидящий» компилятор C# трактует такие нарушения как ошибки. Это предохраняет от нечаянного получения значений «мусора» из памяти, оставшегося там от других программ.
В C# используются два метода для обеспечения инициализации переменных перед пользованием:
- Переменные, являющиеся полями класса или структуры, если не инициализированы явно, по умолчанию обнуляются в момент создания.
- Переменные, локальные по отношению к методу, должны быть явно инициализированы в коде до появления любого оператора, в котором используются их значения. В данном случае при объявлении переменной ее инициализация не происходит автоматически, но компилятор проверит все возможные пути потока управления в методе и сообщит об ошибке, если обнаружит любую возможность использования значения этой локальной переменной до ее инициализации.
Например, в C# поступить следующим образом нельзя:
Ввод-вывод, оператор присваивания, арифметические операции
Оператор присваивания. Арифметические выражения. Типы данных
Оператор присваивания
Первый оператор, с которым мы познакомимся,- оператор присваивания.
Оператор присваивания — основной оператор любого языка программирования. Общая форма записи оператора:
имя величины := выражение
Например, V:=A; или V:=A+1;
При помощи оператора присваивания переменной могут присваиваться константы и выражения, значения переменных любого типа.
Как только в программе встречается переменная, для неё в памяти отводится место. Оператор присваивания помещает значение выражения в место, отведённое переменной.
Если в процессе выполнения программы встречается переприсваивание (т.е. та же самая переменная принимает другое значение), то старое значение переменной стирается, на свободное место записывается новое значение. Команда присваивания позволяет лучше понять смысл слова переменная (т.е. меняющая своё значение по ходу программы).
Выражение может быть арифметическим, логическим или литерным. Важно, чтобы тип величины был согласован с видом выражения.
Арифметические выражения
Арифметические выражения должны быть записаны в так называемой линейной записи согласно следующим правилам:
-
выражение должно быть записано в виде линейной цепочки символов;
Порядок выполнения операций при вычислении арифметических выражений можно регулировать при помощи скобок по обычным правилам. Там, где скобки отсутствуют, ЭВМ выполняет операции в следующем порядке:
-
вычисляет значение всех алгоритмов-функций и стандартных функций;
В нашем случае(*) сначала переменной number1 присваивается значение равное 3 и переменной number2 присваивается значение равное 4, затем вычисляется значение выражения (number1 + number2) и оно присваивается переменной result.
Сумма чисел посчитана.
Теперь надо вывести ее значение на экран. Для этого используют оператор Write — записать (вывести) на экран значение переменной, записанной в скобках. В нашем случае значение переменной number1, затем символ + , далее значение переменной number2, символ = и, наконец, значение результата result.
И, наконец, в конце раздела операторов стоит служебное слово End, после которого стоит точка.
Задание. Наберите текст программы на компьютере и выполните ее (для запуска программы воспользуйтесь комбинацией клавиш Ctrl и F9).
Внимание! Не забывайте о порядке на дискете и в файле:
-
имя программы должно соответствовать ее содержанию,
Задание. Измените программу так, чтобы она подсчитывала сумму четырех чисел.
Сохраните файл на дискете, для этого из меню F10-File выберите команду Save и в предложенной строке наберите путь a:\Vvod\Summa (каталог Vvod должен быть уже организован для файлов, содержащих программы данной темы).
Основные определения
Познакомимся с основными понятиями языка.
Алгоритм — четкая последовательность действий, необходимая для решения задачи.
Программа — алгоритм, записанный на языке программирования.
Алфавит языка — набор элементарных символов, используемый для составления программ. Алфавит содержит:
-
52 буквы латинского алфавита (строчные и заглавные);
Идентификатор (имя) – имя какого-либо элемента программы, которое должно удовлетворять следующим требованиям:
-
длина имени не должна превышать 63 символов;
Правильно выбранные идентификаторы значительно облегчают чтение и понимание программы, а также уменьшают вероятность появления ошибок при модификации программ. Например, значение даты удобнее обозначить идентификатором Date, чем просто буквой D или любым другим символом.
Зарезервированные (служебные) слова — это слова, использующиеся только по своему прямому назначению. Их нельзя использовать в качестве имен переменных, так как они выполняют определенную смысловую нагрузку.
Примеры зарезервированных слов: AND, GOTO, PROGRAM, ELSE, IF, RECORD, NOT, ARRAY, REPEAT, UNTIL, BEGIN, IN, SET, END, CASE, CONST, USES, INTERFACE, STRING, LABEL, THEN, OF, DIV, TO, VAR, DO, TYPE, WHILE, DOWNTO, FILE, FUNCTION, PROCEDURE и другие.
Переменные (Var) — вид данных, который может изменять свое значение в ходе программы, описывают переменные после зарезервированного слова Var.
Константы (Const) — вид данных, который является постоянным на всем протяжении выполнения программы, описывают константы после зарезервированного слова Const.
Комментарии — некоторая запись, служащая для пояснения программы, которая записывается в фигурных скобках.
Типы данных
Для временного хранения информации в операторах памяти машины в языке Паскаль используются константы и переменные. Они могут быть различных типов:
-
целых чисел (см. ниже);
| Название | Длина в байтах | Диапазон значений |
| Byte | 1 | 0 . 255 |
| ShortInt | 1 | -128 . 127 |
| Word | 2 | 0 . 65535 |
| Integer | 2 | -32768 . 32767 |
| LongInt | 4 | -2147483648 . 2147483647 |
Над целыми типами определены такие операции:
- «+» — сложение;
- » * » — умножение;
- » — » вычитание;
- div — целочисленное деление;
- mod — получение остатка от целочисленного деления.
Вещественные типы:
Вещественные типы представляются с некоторой точностью, которая зависит от компьютера. Вам необходимо знать, что вещественный тип разделяется на несколько типов, но использовать мы будем вещественные данные только типа Real, которые занимают 6 байт, имеют диапазон возможных значений модуля от 2.9Е-39 до 1.7Е+38 и точность представления данных — 11. 12 значащих цифр.
Примечание. Несмотря на то, что в Turbo Pascal имеется широкий выбор вещественных типов, доступ к некоторым из них (single, double, extended) возможен при особых режимах компиляции. Особое положение в Turbo Pascal занимает тип comp, трактующийся как вещественное число без экспоненциальной и дробной частей. Он сохраняет 19 — 20 значащих цифр и знак числа. В то же время comp полностью совместим с любыми другими вещественными типами.
В языке Паскаль числа могут быть представлены в двух видах: с фиксированной точкой и плавающей точкой.
Числа с фиксированной точкой изображаются десятичным числом с дробной частью, которая может быть и нулевой. Например, 27.9, 5.00
Такие большие числа, как 137.000.000, можно записать в формате с десятичным порядком: 1.37 · 10 8 . В Turbo Pascal для подобных чисел принята форма записи mEp, где m — мантисса; E — признак записи числа с десятичным порядком; p — показатель степени числа 10. Такое представление чисел и называется форматом с плавающей точкой. Число 1.37 · 10 8 в этом формате запишется так: 1.37Е+8. Рассмотрим еще несколько примеров:
| Математическая запись | Запись на Паскале |
| 4·10 -4 | 4E -4 |
| 0,62·10 5 | 0.62E+5 |
| -10,88·10 12 | -10.88E12 |
По умолчанию, действительные числа выводятся в виде чисел с плавающей точкой. Такое представление чисел не очень нравится пользователям. Поэтому мы будем “заставлять” компьютер выдавать действительные числа в более привычном варианте следующим образом:
R:m:n, где R – действительное число, m – общее количество позиций, отводимых числа, n – количество позиций, отводимых для дробной части.
Например, если мы хотим вывести на экран число Chislo с фиксированной точкой, причем знаем, что для вывода этого числа достаточно 7 мест, а вывод дробной части ограничим сотыми, то мы запишем вывод так:
| Write (Chislo:7:2) |
Символьный тип (char):
Значением величины данного типа является символ из множество всех символов компьютера: русская или латинская большая или маленькая буква, цифра, знак препинания, специальный знак (например, «+», «-«, «*», «/», «», «=» и др.) или пробел » «. Каждый из символов имеет уникальный номер от 0 до 255, т. е. внутренний код, который возвращает функция ORD. Символьная константа – любой символ языка, заключённый в одинарные кавычки. Например,
| Var Simvol : char; |
Строковый тип (string):
Значением строковой величины является строка переменной длины (быть может, пустая). Строковая константа представляет собой произвольную последовательность символов, заключенную в одинарные кавычки. Например,
| Var Stroka : string; |
Логический тип (boolean):
Логический тип данных часто называют булевым по имени английского математика Д. Буля, создателя математической логики. В языке Паскаль имеются две логические константы TRUE и FALSE. Логическая переменная принимает одно из этих значений и имеет тип Boolean. Для сравнения данных предусмотрены следующие операции отношения: , >, >= Результат операции отношения имеет логический тип, т.е. результат операции может быть истинным или ложным, например, 3>5 – ложь.
Над величинами этого типа можно выполнять специфические логические операции OR — или; AND — и; NOT — не.
Более подробно этот тип данных мы рассмотрим при изучении условного оператора.
Сложные типы:
К сложным или структурированным типам относятся массивы, записи, множества, которые требуют специального изучения и здесь рассматриваться не будут.
Задание. Откройте новый файл. Создадим программу, в которой опишем несколько переменных разного типа, введем в них значения и выведем на экран.
| Program TipDann; Uses Crt Var Chislo1 : Integer; Chislo2 : Real; Simvol : Char; Stroka : String; Logika : Boolean; Begin ClrScr; Chislo1:=12; Chislo2:=Chislo1*2; Chislo2:=Chislo2/5; Simvol:=’d’; Stroka:=’Строчка’; Logika:= Chislo1> Chislo2; WriteLn (‘Вывод значений:’); WriteLn (‘Значение переменной Chislo1 : ‘,Chislo1); WriteLn (‘Значение переменной Chislo2 : ‘,Chislo2:5:2); WriteLn (‘Значение переменной Simvol : ‘,Simvol); WriteLn (‘Значение переменной Stroka : ‘,Stroka); WriteLn (‘Значение переменной Logika : ‘,Logika); End. |
Внимательно рассмотрите каждую строчку программы. Обратите особое внимание на описание переменных: Chislo1 — переменная целого типа, Chislo2 — действительного, Simvol — символьного, Stroka — строкового, Logika — логического. Далее в основной программе идет присвоение переменной Chislo1 целого числа 12, переменной Chislo2 — целого числа 24. Обратим внимание, что переменной действительного типа Chislo2 присвоено целое число; никакой ошибки нет, т. к. множество целых чисел является подмножеством множества действительных чисел. Следующая строчка еще более интересная: переменной Chislo2 присваивается значение той же переменной, только деленной на 5.
Такое присваивание используют в программах, если предыдущее значение этой переменной уже не понадобится и для более рационального использования описанных переменных. Для того чтобы переменной символьного типа присвоить какой-либо символ (например, d), надо этот символ записать в одинарных кавычках (знак «’»). Аналогично поступают с переменными строкового типа (смотри следующую строку программы). А про переменные логического типа мы знаем, что им можно присваивать только два значения: True и False. В этой программе мы присвоим значение результата сравнения двух переменных, здесь оно будет равно True. А теперь выведем присвоенные значения на экран.
Задание. Измените значения переменных и проанализируйте результаты выполнения программы. Сохраните программу на дискете под правильным именем в соответствующем каталоге. Распечатайте программу.
