Данные

Типы данных языка PHP.

    В php есть три основных типа данных: целое число (integer), действительное число (double), и строка (string). Помимо основных имеются еще два типа: массивы и обьекты, которые обсуждаются в последующих главах. У каждой переменной есть свой тип, хотя тип переменной может меняться налету, когда изменяется значение переменной или иным программным образом.
    Целые числа занимают 4 байта памяти и используются для предоставления обычных чисел в диапазоне примерном от –2 миллиардов до +2 миллиардов. Числа с плавающей запятой (действительные) используются для предоставления десятичных значений или показателей. Строки используются для предоставления нечисловых значений типа букв, знаков пунктуации и даже чисел.
2 // это целое число
2.0 // это действительное число
" 2" // это строка
" 2 hours" // это тоже строка.
    Во многих языках есть логический тип данных для предоставления логических значений True и False. В php такой тип отсутствует. Вместо этого исползуется выражения, составленные из 3-х других основных типов, принимающие значение истина или ложь. Для целых чисел 0 (ноль) вычисляеться как False, а любое ненулевое целое значение как True. Анологично действительное значение 0,0 (или такие его эквиваленты 0,000) вычисляются как False, а ненулевые значения вычисляются как True. Что касаеться строк, то пустая строка вычисляеться как False, она представляеться парой кавычек между которыми ничего нет. Все непустые строки вычисляються как True.

Литералы и идентификаторы

    Переменные, константы, функции и классы должны иметь различные метки для того, чтобы их можно было использовать. Для этих меток существует различие между литералами и именами. Литералы являются "сырыми" данными — что видишь, то и имеешь. Могут быть числовые литералы (например 786) и строковые литералы (например "аquoted string"). По сути, нельзя сделать так, чтобы литерал означал что либо иное, кроме того, что он буквально означает. Напротив, имена получают значение в результате соглашения или в результате установки. Связь между именем и его значением произвольна: роза, как известно, "пахнет розой, хоть розой назови ее, хоть нет". Имена, используемые при программировании, называются идентификаторами. В идентификаторах РНР учитывается регистр, поэтому $price и $Price суть разные переменные. Однако во встроенных функциях и структурах регистр не различается, поэтому echo и ЕСНО выполняют одну и ту же функцию. Идентификаторы могут состоять из любого количества букв, цифр, символов подчеркивания и доллара, но не должны начинаться с цифры.

Значения данных и константы

    Значения данных
Помимо смысла для программы идентификатор также имеет значение, являющееся элементом данных определенного типа. Если идентификатор может изменять свое значение на протяжении программы, он называется переменной, в то время как идентификатор с фиксированным значением носитназвание константы.
    Константы — это неизменные значения. В число общеизвестных констант входят число «пи» (приблизительно 3,14), точка замерзания воды при нормальном атмосферном давлении (О 'С) и значение «полдень» (12:00). В программировании есть два типа констант: литеральные и символьные. Литеральными константами являются просто неизменные величины, ссылка на
которые производится непосредственно, без использования идентификатора.

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

Например, название вашей компании является довольно постоянной величиной. Вместо того чтобы вставлять литеральную строку «Phop's Bicycles» по всему вашему приложению, можно определить константу с именем COMPANY и значением «Рhор' s Bicycles» и использовать ее для ссылок на название компании в программе. Если когда-либо название компании изменится в результате слияния или маркетинговой уловки, то код придется обновить только в одном месте: там, где вы определили константу. Обратите внимание, что имена констант, в отличие от переменных, не начинаются с символа доллара.

Определение констант
Для создания констант используется функция define():

define("Company", "Phop's Bicycles");
define( "YELLOW", "#FFFF00" );
define("VERSION", 3);
define("NL", "<BR>\n");

В последнем примере определяется константа с именем NL, представляющая:

тег разрыва текста HTML, за которым следует символ новой строки

В сущности, мы создали сокращение в коде, поскольку «<BR>\n» является часто используемой комбинацией. Среди программистов принято определять константы с использованием только прописных букв. Константа может содержать любое числовое или строковое значение. Когда константы определены, ими можно пользоваться вместо их значений:

echo("Employment at " . Company . NL);
 

Это эквивалентно следующему:

echo("Employment at Phop's Bicycles <BR>\n");

Обратите внимание, что константы помещаются вне кавычек. Строчка:

echo("Employment at CОMPANY NL");

вывела бы в броузер буквально «Employment at COMPANY NL».

defined()
Функция defined() позволяет определить, существует ли константа. Она возвращает 1, если константа существует, и 0 — в противном случае:

if (defined("YELLOW") ) {
echo ("<BODY BGCOLOR=" . YELLOW . ">\n");
}

Встроенные константы
PHP содержит несколько встроенных констант. Определены константы TRUE
и FALSE со значениями «истина» (1) и «ложь» (0 или пустая строка), соответственно. Константа РНР_version указывает на версию анализатора PHP, выполняемую в данный момент, например 3. 0.11. Константа PHP_OS указывает операционную систему сервера, на котором выполняется анализатор.

echo (РHР_OS); // выводит "Linux" (например)

_FILE_ и _LINE_ содержат имя анализируемого сценария и номер текущей строки в этом сценарии, соответственно. (Имена обеих констант начинаются и заканчиваются двумя символами подчеркивания.)

В PHP входят несколько констант для сообщения об ошибках: E_ERROR, E_WARNING, Е_PARSE и Е_NOTICE.

Далее, в PHP используется ряд предопределенных переменных, в которых содержится информация о среде, в которой выполняется PHP. Чтобы узнать, какие значения имеют эти переменные на вашем компьютере, можновоспользоваться функцией phpinfo (), как показано в следующем примере. В результате вы должны увидеть на экране следующее:
<HTML>
<!-- phpinfo.php -->
<BODY>
<?php
phpinfo()
?>
</BODY>
</HTML>

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

$num_rows = 10;
$product = "Tire Pump";
$price = 22.00;
$shipping = 5.00;
$total = $price + $shipping;

Приведение и преобразование типов
Как уже говорилось, у каждой переменной PHP имеется тип данных. Этот
тип автоматически определяется значением, присвоенным этой переменной.
$а = 1; // $а - целое
$а = 1.2; // теперь это число с плавающей запятой
$а = "A" // теперь это строка

Преобразование строк и приведение типов
При выполнении над строкой числовой операции РНР переводит строку в
число, что известно как преобразование строк (string conversion), хотя сама
переменная, содержащая строку, может не измениться. В следующем примере переменной $str присваивается строковое значение:

$str = "222 Baker Street";

Если попытаться прибавить к $str целое число 3, то для проведения вычислений $str будет переведена в целое число 222:

$x = 3 + $str; // $x = 225;

При этом значение самой переменной $str не изменится:

echo ($str); // Выводит: 222В Baker Street"

При преобразовании строк соблюдаются некоторые правила:

  1. В число переводится только начало строки. Если строка начинается с допустимого численного значения, она будет переведена в это значение, впротивном случае - в ноль. Строка "3rd degree" переводится в 3 при ис-пользовании в числовой операции, но "Catch 22" будет переведена в 0(ноль).
  2. Строка переводится в число с плавающей запятой только в случае, если представляемое число занимает всю строку. Строки "3,4", "-4,01" и "4,2еб" переводятся в действительные числа 3, 4, -4, 01 и 4, 2000000. Однако если строка включает другие символы, не представляющие действительное число, она переводится в целое. Например, строка "3,4 children" переводится в целое число 3, а строка "-4, 01 degrees" переводится, в целое число -4.
    Помимо преобразования строк РНР производит приведение различных числовых типов (type juggling) к одному. Если выполняется числовая операция над числом с плавающей запятой и целым, то результат будет числом с плавающей запятой:

$a = 1; // $а — целое
$b = 1.0; // $b - число с плавающей запятой
$c = $a + $b; // $с — число с плавающей запятой (значение 2,0)
$d = $c + “6th”; // $d — число с плавающей запятой (значение 8,0)

Преобразование типа
Преобразование типов (type casting) позволяет явным образом изменить тип данных переменной:

$e = 11.2; // $а — число с плавающей запятой
$a = (int) $a; // Теперь зто целое (значение равно 11)
$a = (double) $a // Теперь зто снова число с плавающей запятой (11,0)
$b = (string) $a // $b — строка ( " 11" )

Допускается также преобразование (array) и (object) . Тип (integer) является синонимом для (int) (float) и (real) являются синонимами для (double) .

Переменные с переменным идентификатором

PHP поддерживает переменные с переменным идентификатором (variable variables). Обычные переменные имеют динамические значения: значение переменной можно устанавливать и изменять. У переменных с переменным идентификатором динамическим является имя. Такие переменные обычно создают больше путаницы, чем удобства (особенно при использовании в массивах). Они включены в язык для полноты, но на практике приносят мало
пользы. Вот пример изменяемой переменной:

$field = "PrcductID"
$$field = "432ВВ";

В первой строке приведенного кода создается строковая переменная с именем $field, которой присваивается значение "ProductID". Во второй строке
используется значение первой переменной для создания имени второй пере-
менной. Вторая переменная получает имя $ProductZD и значение "432BB".
Следующие две строки кода производят одинаковую выдачу:

echo ($ProductID); // Выводит: 432BB
echo ($$field); // Выводит: 432ВВ

Полезные функции для работы с переменными

В PHP есть ряд встроенных функций для работы с переменными.

gettype()
Функция gettype() определяет тип данных переменной. Она возвращает одно из следующих значений:

  1. "integer"
  2. "double"
  3. "string"
  4. "array"
  5. "object"
  6. "class"
  7. "unknown type"

0 массивах, объектах и классах мы расскажем в последующих главах. Вот пример использования gettype ():

if (gettype (Suser input) == "integer") {
$age = $user_input;
}

Родственные функции: isset (), settype ()

settype()
Функция settype() явным образом устанавливает тип переменной. Тип указывается как строка и может иметь одно из следующих значений: array, double, integer, object или string. Если присвоить указанный тип не удалось,функция возвращает значение false.

$a = 7.5; // $а - число с плавающей запятой
settype($a, "integer"); // теперь это целое (значение равно 7)
settype() возвращает true, если преобразование было успешным, и false - в противном случае.

if (settype($a, "array")) {
echo("преобразование было успешным.");
} else {
echo ( "Ошибка преобразования. ");
}

isset() и unset()
Функция unset () используется для уничтожения переменной, при этом освобождается вся оперативная память, связанная с переменной. Функция isset () позволяет определить, присвоено ли переменной какое-либо значение. Если значение присвоено, функция возвращает true.

$ProductID = "432ВВ";
if (isset($ProductID)),{
echo ( "Эту переменную можно вывести" );
}
unset($ProductID);
if (isset ($ProductID)) {
echo("Эту переменную НЕЛЬЗЯ вывести");
}

 

empty()
empty () почти противоположна isset () . Она возвращает true, если переменная не установлена, либо имеет значение «ноль» или «пустая строка». В противном случае она возвращает false.

echo empty ($new); // true
$new = 1;
echo empty($new);
// false
$new = "";
echo empty($new);
// true
$new = 0;
echo empty($new)
// true
$new = "Buon giorno";
echo empty($new); // false
unset ($new);
echo empty($new)
/

Функции ~5...() // true
Функции is int(), is integer() и islong() синонимичны и определяют, является ли переменная целым числом.
is double(), is float () и is real() определяют, является ли переменная числом с плавающей запятой.
is string(), is array() и is object() работают аналогично с соответствующими типами данных.

$PrcductID = "432BB"
if (is string ($ProductID)) (
echo ("String");
}

Функции ...val()
РНР предоставляет еще один способ явного задания типа данных переменной: функции intval (), doubleval () и strval (). Эти функции нельзя использовать для преобразования массивов и объектов.

$ProductID = “432BB”;
$I = initval ($ProductID,16); //$I = (decimal)275131

Функция intval () может принимать необязательный второй аргумент, указывающий основание исчисления, используемое при преобразовании. По умолчанию используется основание 10 (десятичные числа). Ниже в примере задано основание 16 (шестнадцатеричные числа):

$ProductID = “432BB”;
$I = initval ($ProductID,16); //$I = (decimal)275131

“432BB” было интерпретировано как пятизначное шестнадцатеричное число.

All materials ® by IATP/Belarus
©2003Голубь Update:25.05.03

Hosted by uCoz