- •Пособие по работе в среде программирования php 4
- •1.Установка php
- •Настройка Apache для работы с php
- •Тестирование php
- •Установка дополнительных модулей
- •2. Характеристика языка php
- •Интерпретатор или компилятор?
- •Достоинства и недостатки интерпретатора
- •Использование php в Web
- •3. Переменные, константы, выражения
- •Переменные
- •Integer
- •Действия с переменными
- •1.Присвоение значения.
- •2.Проверка существования.
- •3.Уничтожение.
- •4.Определение типа переменной.
- •Константы
- •Выражения
- •Операции
- •4. Работа с данными формы
- •5. Конструкции языка
- •6. Ассоциативные массивы
- •Операции над массивами
- •1.Одинаковые ключи
- •2.Нулевой ключ
- •7. Функции и области видимости
- •8. Строковые функции
- •9. Работа с массивами
- •10. Математические функции
- •11. Работа с файлами
- •12. Работа с каталогами
- •13. Каналы и символические ссылки
Integer
Целое число со знаком, обычно длиной 32 бита (от –2 147 483 648 до 2 147 483 647, если это еще кому-то может быть интересно).
double
Вещественное число довольно большой точности (ее должно хватить для подавляющего большинства математических вычислений).
string
Строка любой длины. В отличие от Си, строки могут содержать в себе также и нулевые символы, что никак не повлияет на программу. Иными словами, строки можно использовать для хранения бинарных данных. Длина строки ограничена только размером свободой памяти, так что вполне реально прочитать в одну строку целый "объемистый" файл размером так килобайтов 200—300 (что часто и делается). Строка легко может быть обработана при помощи стандартных функций, можно также непосредственно обратиться к любому ее символу.
array
Ассоциативный массив (или, как его часто называют, хэш, хотя для PHP такое понятие совсем не подходит). Это набор из нескольких элементов, каждый из которых представляет собой пару вида ключ=>значение (символом => я обозначаю соответствие определенному ключу какого-то значения). Доступ к отдельным элементам осуществляется указанием их ключа. В отличие от массивов Си, ключами здесь могут служить не только целые числа, начиная с нуля, но и любые строки. Например, вполне возможно существование таких команд:
// создаст массив с ключами "0", "a", "b" и "c"
$a=array(0=>"zzzz", "a"=>"aaa", "b"=>"bbb", "c"="ccc");
echo $a["b"]; // вы ве дет "bbb"
$a["1"]="qq"; // создаст новый элемент в массиве и присвоит ему "qq"
$a["a"]="new_aaa"; // присвоит существующему элементу "new_aaa";
Забегая вперед, скажу, что оператор array() создает массив, элементы которого перечислена в его скобках.
object
Объект, реализующий несколько наиболее простых принципов объектно-ориентированного программирования. Внутренняя структура объекта похожа на хэш, за исключением того, что для доступа к отдельным элементам и функциям используется оператор >, а не квадратные скобки. Про объекты мы еще поговорим в будущем, когда разберемся наконец с основами языка.
Логические переменные
Существует и еще один гипотетический тип переменных – логический. Логическая переменная может содержать одно из двух значений: false (ложь) или true (истина). Любое ненулевое число (и непустая строка), а также ключевое слово true символизирует истину, тогда как 0, пустая строка и слово false – ложь. Таким образом, любое ненулевое выражение (в частности, значение переменной) рассматривается в логическом контексте как истина. Вы можете пользоваться константами false и true в зависимости от логики программы. Ключевые слова false и true – не совсем обычные константы. False является просто синонимом для пустой строки, а true – для единицы. Именно так они выглядят, если написать следующие операторы:
echo false; // выводит пустую строку, т. е. ничего не выводит
echo true; // выводит 1
Теперь давайте рассмотрим такую программу (листинг 3.1).
Листинг 3.1. Логические величины
<?
$a=100;
if($a==1) echo "переменная равна 1!<br>"
if($a==true) echo "переменная истинна!<br>"
?>
Если бы true была в точности равна константе 1, то вывелись бы обе строки, не правда ли? А отображается только последняя. Это говорит о том, что не все так просто. Мы видим, что в операторах сравнения (например, в операторе сравнения на равенство ==, а также в операторах >, < и т. д.) PHP интерпретирует один из операндов как логический, если другой также логический. Следующий пример (листинг 3.2) показывает, что, вообще говоря, PHP хранит для каждой переменной признак, является ли она логической.
Листинг 3.2. Логические переменные
<?
$a=100;
$b=true;
echo "a = $a<br>";
echo "b = $b<br>";
if($a==$b) echo 'а "равно" b!';
?>
Как ни странно, но программа печатает, что "а=100 иb=1", а затем с гордостью заявляет, что "a равноb". Хотя в данном примере мы прекрасно понимаем, что так и должно быть (потому что на самом-то деле переменные сравниваются как логические), поэтому будьте осторожны, когда вместо $a используется, например, число, возвращенное функцией. Иначе это может породить ошибку, которая "убьет" несколько часов на ее поиски.
Конечно, при выполнении арифметических операций над логической переменной она превращается в обычную, числовую переменную. Однако при написании этой книги я наткнулся на интересное исключение: по-видимому, операторы ++ и -- для увеличения и уменьшения переменной на 1 не работают с логическими переменными (листинг 3.3):
Листинг 3.3. Особенности операторов ++ и --
<?
$b=true;
echo "b: $b<br>";
$b++;
echo "b: $b<br>";
?>
Эта программа выводит оба раза значение 1. Некоторые особенности работы с логическими переменными вполне могут измениться в следующих версиях PHP. Их описание приведено здесь лишь с одной целью: уберечь вас от возможных ошибок, которые трудно будет найти в программе.
