
Переменные переменные
Скорее всего скоро вам понадобятся переменныес динамически (в ходе работы скрипты) изменяемым наименованием. Поясню на пример, что я имею ввиду:
$a = "hello"; $$a = "world";
Данная запись означает, что переменной с именем a мы присваиваем значение "hello". Следующей операцией переменной с именем, хранящимся в переменной с именем a, то есть - переменной hello мы присваиваем занчение "world"
echo "$a ${$a}";
тоже самое, что и
echo "$a $hello";
В результаты мы получим на экране hello world
Дело ненмого усложняется, если вы хотите использовать подобные массивы. Ведь если вы запишете $$a[1] - интерпретатору надо будет знать, что использовать в качестве переменной - $a или $$a (имя, зранящееся в $a). В таком случаем вам прийдется исопльзовать следующий синтаксис - ${$a[1]} в случае, если вы хотите использовать переменную с именем, зранящимся в массиве $a с индексмо 1 и ${$a}[1] в другом случае (если вы хотите использовать элемент 1 массива с именем, зранящимся в переменной $a.
Прыжок на месте
Мы продолжаем наш концерт, а за одно и рассматривать основы PHP. Сегодня начнем с внешних переменных.
HTML Формы (GET и POST)
После заполнения пользователем HTML формы PHP может получить доступ к этим данным через переменные, имеющие такие-же название, что и поля в форме. Как всегда продемонстрирую на примере:
<form action="foo.php3" method="post">
Name: <input type="text" name="name">
<input type="submit">
</form>
Значит после того, как пользователь нажмет в форме кнопку submit в php-скрипт foo.php3 методом post передадутся данные из формы, а обратиться, например к текстовому полю, из этого скрипта можно будет через переменную $name. Кроме того, можно использовать и массивы в качестве названий полей.
<form action="array.php" method="post">
Name: <input type="text" name="personal[name]">
Email: <input type="text" name="personal[email]">
Beer:
<select multiple name="beer[]">
<option value="warthog">Warthog
<option value="guinness">Guinness
</select>
<input type="submit">
</form>
В результате это скрипт (array.php) может вывести полученные результаты так:
echo "Имя: ".$personal["name"];
echo "Email: ".$personal["email"];
for ($i=0;$i<sizeof($beer);$i++)
echo $beer[$i]."<br>";
Кроме этого, как известно в форме в качестве submit-кнопки можно применять картику <input type=image src="image.gif" name="sub">. В таком случаем скрипту возвращаются еще две дополнительных переменных, содержащих координаты точки, на которой кликнули мышкой. Это sub_x и sub_y.HTTP Cookies
В PHP реалиован также простой способ работы с куками. С помоью функции SetCookie() можно их устанавливать, получать значения, как и в случае с формами - по имени переменной. В случае, если вы ожидаете получить несколько значений от куки имеет резон исопльзовать в качестве имени переменной - массив. Как в следующем примере.
SetCookie ("MyCookie[]", "Testing", time()+3600);
Существует только одно небольшое ограничение. Так-как куки - это часть HTTP заголовка их следует посылать самыми первыми. То есть грубо говоря, ваш скрипт должен начинаться с установки куки, а потом уже заниматься выводом html кода. Еще один пример, уже полноценного счетчика:
$Count++;
SetCookie ("Count", $Count, time()+3600);
SetCookie ("Cart[$Count]", $item, time()+3600);
Переменные окружения
И тут все так-же просто. Хотите узнать домашний каталог? В юникс-системах этообычно переменная окружения с именем HOME. Так узнавайте:
echo $HOME;
Вы также можете работать с переменными окружения через функции
getenv() и putenv()
КОНСТАНТЫ
Вы можете использовать не только переменный но и константы с помощью функции define(). Взгляните на следующий пример:
define("CONSTANT", "Hello world.");
echo CONSTANT;
обратите внимание на то, что перед именем константы не пишется символа переменной $ и это правильно.
Ну и напоследок список предопределенных констант.
__FILE__ Имя файла выполняемого скрипта.
__LINE__ Колличество линий, инетрптетированный на данный момент в этом скрипте.
PHP_VERSION Тут хранится версия PHP. Например: '3.0.8-dev'.
PHP_OS Имя операционной системы, на которой выполняется PHP-скрипт.
TRUE Истина.
FALSE Ложь.
E_ERROR Описывает случившуюся ошибку, продолжение работы после которой невозможно.
E_WARNING Описывает ошибку, после которой продолжается выполнения скрипта.
E_PARSE Описывает синтаксическую ошибку, рпи разоре интерпретатором текста скрипта.
E_NOTICE Просто какое-то сообщения от интерпретатора. Возможно ошибка, а возможно и нет.
Вот и все о константах и переменных. Со следующего шага займемся опарторами и выражениями.
Программируемый калькулятор
Сегодня рассмотрим все возможные операции на всеми возможными типами переменных и их значениями.
Арифметические операции
А рифметических операция в PHP всего пять, вот они:
$a + $b
$a - $b
$a * $b
$a / $b
$a % $b
Я думаю здесь все ясно. Ну можеттолко поясню последнюю операцию, результат ее выполнения остаток от деления $a на $b.
Строковые операции
А здесь и того меньше! Чисто строковой операцией считается операция сложения двух строк. Причем выглядит она довольно необычно, но практично:
$c = $a . $b;
То есть символом этой операции является точка. А результатом ее выполнения будет обыкновенная строка, состоящая из $a и $b
Операция присваивания
Ну тут вообще ничего сложного, она всегда одна, это знак '=' и естественно этот знак означает, что переменной с лева от него будет присвоенное значение, полученное в результате выполнения каких либо операций или переменной/константы с правой стороны. Причем тут возомжно некоторый С++ -ные варианты, как-то:
$a = ($b = 4) + 5; // $a будет равна 9, а $b 4-м.
$a += 5; // аналогично $a = $a + 5;
$b = "Привет ";
$b .= "всем!"; // а$a & $b Побитовое И (AND) налогично $b="Привет всем!"
Двоичные операции
Аа... и тут вообщем-то ничего нового:
$a & $b Побитовое И (AND)
$a | $b Побитовое ИЛИ (OR)
~ $a Исключающее или (XOR)
$a << $b Сдвиг влево на $b битов
$a >> $b Сдвиг вправо на $b битов
Логические операции
Все тоже...
$a and $b И (AND)
$a && $b Тоже самое, что и предыдущее
$a or $b Или (OR)
$a || $b Тоже, что и предыдущее
$a xor $b Исключающее или (XOR)
! $a Инверсия (NOT)
Операции сравнения
Здесь будет что-нибудь новое или нет? Даже комментировать эти операции не буду...
$a == $b
$a != $b
$a < $b
$a > $b
$a <= $b
$a >= $b
В PHP существует также, как и в C++, тринарный оператор '?:'. Кто незнает - обьясню на примере.
$res= (expr1) ? (expr2) : (expr3);
Результатом этой операции будет значение (expr2), в том случае, если expr1==1 и значение expr3 в противном случае. Где все эти expr1, expr2, expr3 - являются переменными/константами или математиескими выражениями. Такая запись по сути своей аналогична следующей:
if (expr1) $res=(expr2); else $res=(expr3);
но естественно более лаконична.
А собственно об этом и все. Мы рассмотрели все операции, присутсвующие в PHP. Слудующим шагом рассмотрим управляющие структуры (или их еще можно назвать командами).