Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка PHP 2008.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

2.2 Переменные, константы, выражения

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

Переменные РНР это объекты, которые могут содержать в буквальном смысле все, что угодно (исключение – константа, которая может содержать только строку или число). Такого понятия как указатель в РНР не существует. При присваивании переменная копируется один-в-один, какую бы сложную структуру она не имела.

В программе не могут использоваться неинициализированные переменные!

Типы переменных. РНР непосредственно поддерживает 5 типов переменных:

  • integer – целое число со знаком, обычно длиной 32 бита (от -2 147 483 648 до 2 147 483 647);

  • double – вещественное число довольно большой точности;

  • string – строка любой длины;

  • array – ассоциативный массив (или его часто называют хэш). Это набор из нескольких элементов, каждый их которых представляет собой пару вида ключ=>значение (символом => обозначается соответствие определенному ключу какого-то значения). Доступ к отдельным элементам осуществляется указанием их ключа. В отличие от массивов Си ключами могут служить не только целые числа, начиная с нуля, но и любые строки. Оператор array() создает массив, элементы которого перечислены в скобках.

// создаст массив с ключами ”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”

  • object – объект, реализующий несколько наиболее простых принципов объектно-ориентированного программирования. Внутренняя структура объекта похожа на хэш, за искючением того, что для доступа к отдельным элементам и функциям используется оператор ->, а не квадратные скобки.

Логические переменные. Логическая переменная может содержать одно из двух значений: false или true. Кроме того, любое ненулевое число (и непустая строка) символизирует истину, тогда как 0, пустая строка – ложь.

echo false; // выводит пустую строку

echo true; // выводит 1

Действия с переменными. Вне зависимости от типа переменной, с ней можно делать три основных действия.

Присвоение значения (оператор =).

Проверка существования. Можно проверить существует ли (то есть, инициализирована ли) указанная переменная. Осуществляется это с помощью оператора IsSet(). Если такая переменная существует, функция возвращает значение истина, в противном случае – ложно.

if(IsSet($MyVar))

echo ”Такая переменая есть. Её значение $MyVar”;

Уничтожение. Уничтожение переменной реализуется оператором Unset(). После этого Действия переменная удаляется из внутренних таблиц интерпретатора, т.е. программы начинает выполняться так, как будто переменная еще не была инициализирована.

$a=”Hello”;

echo $a;

Unset($a); // теперь переменной а не существует

echo $a; // Ошибка: нет такой переменной

Применение Unset() для работы с обычными переменными нецелесообразно. Она используется для удаления элементов в ассоциативном массиве. Например, если в массиве $A нужно удалить элемент с ключом for_del:

Unset($A[”for_del”]);

Стандартные функции определения типа переменной:

is_integer($a) //возвращает true, если $a – целое число

is_double($a) //возвращает true,

//если $a – действительное число

is_string($a) //возвращает true, если $a – строка

is_array($a) //возвращает true, если $a – массив

is_object($a) //возвращает true, если $a – объект

is_boolean($a) //возвращает true,

// если $a – логическая переменная

is_gettype($a) //возвращает строки со значениями array, object,

//integer, double, string, boolean или unknown type

//в зависимости от типа переменной. Последнее

//значение возвращается для тех переменных,

//типы которых не являются встроенными в РНР.

Установка типа переменной

Функция settype(переменная,тип) пытается привести тип указанной переменной к одному из стандартных типов и возвращает значение false, если это не удалось.

settype($a,”integer”);

Оператор присваивания

$имя_переменной=значение;

В конце каждого оператора должна стоять ;

Cсылочные переменные. Хотя в РНР нет такого понятия как указатель, все же можно создавать ссылки на другие переменные. Существует две разновидности ссылок: жесткие и символические.

Жесткая ссылка представляет собой просто переменную, которая является синонимом другой переменной. Многоуровневые ссылки (то есть ссылка на ссылку) не поддерживаются. Жесткие ссылки создаются с помощью оператора &.

$a=10;

$b=&$a; // теперь $b то же самое, что и $a

Жесткая ссылка и переменная (объект), на которую она ссылается, совершенно равноправны, изменение одной влечет изменение другой. Оператор Unset() выполненный для жесткой ссылки, не удаляет объект, на которую она ссылается, а всего лишь разрывает связь между ссылкой и объектом. Объект удаляется только тогда, когда на него никто уже не ссылается. Жесткие ссылки применяются при передаче параметров функции и возврате значения из нее.

Символическая ссылка – строковая переменная, хранящая имя другой переменной. Чтобы добраться до значения переменной, на которую ссылается символическая ссылка, необходимо применить оператор разыменования – дополнительный знак $ перед именем ссылки.

$a=10;

$p=”a”; // присваиваем $p имя другой перемнной

echo $$p;//выводим переменную, на которую ссылается $p, т.е. $a

$$p=100; // присваивает $a значение 100

Итак, для того, чтобы использовать обычную строковую переменную как ссылку, нужно перед ней поставить еще один знак $. Это говорит интерпретатору, что надо взять не значение самой $p, а значение переменной, имя которой хранится в переменной $p.

Использование символических ссылок лучший способ запутать программу, поэтому старайтесь их избегать!

Константы. Константа отличается от переменной тем, что ей нигде в программе нельзя присвоить значение более одного раза, и её имя не предваряется знаком $, как это делается для переменных. Константы бывают 2 типов: предопределенные (установленные самим интерпретатором) и определенные программистом.

Предопределенные константы:

_FILE_ – хранит имя файла программы, которая выполняется в данный момент

_LINE_ – содержит текущий номер строки, которую обрабатывает в текущий момент интерпретатор

PHP_VERSION – версия интерпретатора РНР

PHP_OS – имя операционной системы, под которой работает РНР

TRUE или true – истина

FALSE или false – ложно

Определенные пользователем константы задаются при помощи оператора define()

define(”pi”,3.14);

define (”str”,”Hello”);

echo sin(pi/4);

echo str;

Функция defined(имя константы) проверяет, существует ли константа с указанным именем и возвращает значение false, если такой константы нет.

Выражения

Числовые выражения

$a=5; // a=5

$a=($b=10); // $a=$b=10

$a=4*sin($b=$c+10)+$d; // $b=$c+10

// $a=4*sin($c+10)+$d

Следующие операторы преобразования типов используются как в функциональной, так и в префиксной операторной форме, т.е. следующие конструкции эквивалентны:

$a=intval($b);

$a=(int)$b;

Операторы преобразования типов:

$b=intval(выражение) или $b=(int) (выражение)

// переводит выражение в целое число

$b=doubleval(выражение) или $b=(double) (выражение)

// переводит выражение в действительное число

$b=strval(выражение) или $b=(string) (выражение)

// переводит выражение в строку

$b=(bool) (выражение)

// переводит выражение в логический тип.

Логические выражения. Логические операторы: <, > , == (равно), || (или), ! (не), && (и). Переменным можно присваивать значения логических выражений:

$a=10<5; // a=false

$a=$b==1; // $a=true, если $b=1

$a=$b>1&&$b<=10 // $a=true, если $b в пределах от1 до 10

$a=!($b||$c)&&$d; //$a=true, если $b и $c ложны, а $d – истинно

$b=$a>=1&&a<=10; //присваиваем $b значение логического

// выражения

if ($b) echo ”a в нужно диапазоне значений”;

Cтроковые выражения. Строки могут содержать текст вместе с символами форматирования. Определение строки в кавычках или апострофах может начинаться на одной строке, а завершаться на другой.

Строка, заключенная в апострофы трактуется так же, как записана, за исключением двух последовательностей символов:

\’ трактуется как апостроф, предназначенный для вставки апострофа в строку, заключенную в апострофы;

\\ трактуется как обратный слэш и позволяет вставить в строку этот символ.

Строки в кавычках могут содержать набор специальных метасимволов:

\n – символ новой строки;

\r – символ возврата каретки;

\t – символ табуляции;

\$ – обозначает символ $, чтобы следующий за ним текст не был интерпретирован как переменная;

\” – кавычка;

\\ – обратный слэш;

\xNN символ с шестнадцатеричным кодом NN.

Для слияния строк используется операция конкатенации “.”. Операторы, выводящие текстовые строки.

echo ”Текущая дата: $dat года <br>\n”;

echo ”Текущая дата:”,$dat,” года <br>\n”;

echo ”Текущая дата:”.$dat.” года <br>\n”;

Плюс используется как числовой оператор, а точка – как строковый:

$a=”100”;

$b=”200”;

echo $a+$b; // выведет “300”

echo $a.$b; // выведет “100200”

Here–документ. Это способ записи строковых констант, который представляет собой альтернативу для записи многострочных констант.

$a=<<<MARKER

Далее идет какой-то текст, возможно,

с переменными $name значения которых будут

вставлены в документ

MARKER;

Строка MARKER может быть любым алфавитно-цифровым идентификатором. Синтаксис накладывает 2 ограничения на here-документы:

1) после <<<MARKER и до конца строки не должны идти никакие непробельные символы;

2) завершающая строка MARKER; должна оканчиваться точкой с запятой, после которой до конца строки не должно быть никаких инструкций. MARKER – это любой идентификатор.

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

$st='command.com/c dir';

echo ”<pre>$st</pre>”;

Операции:

Арифметические: +, -, *, /, a%b (остаток от делении а на b, работает только с целыми числами), $a+=4; $b-=3;

Строковые: a.b – слияние строк; a[n] – символ строки в позиции n.

Присваивания (=).

Инкремента и декремента ($a++, $a--, --$a, ++$a).

Битовые операции. Предназначены для работы (установки/снятия/проверки) групп битов целой переменной. Биты целого числа – это отдельные разряды того же самого числа, записанного в двоичной системе счисления: a&b, a|b, `a, a<<b (сдвиг влево), a>>b (сдвиг вправо).

Операции сравнения: a==b, a!=b, a<b, a>b, a<=b, a>=b.

Операции эквивалентности: это тройной знак равенства = = =, или оператор проверки на эквивалентность. Это оператор не только сравнивает выражения, но и их типы. Есть антипод этого оператора (!= =) – не эквивалентны.

Логические операции. !a, a&&b, a||b

Оператор отключения предупреждений. В РНР-программах все ошибки выводятся в окно браузера вместе с указанием строки и файла, в которых они находятся. РНР ранжирует ошибки и предупреждения по четырем основным «уровням серьезности». Можно настроить PHP так, чтобы он выдавал только ошибки тех уровней, которые необходимы. Для отключения выдачи ошибок в окно браузера, существует оператор @(отключение ошибок). Если разместить этот оператор перед любым выражением, то сообщения об ошибках в этом выражении будут подавлены и в окне броузера не отображены.

<? if (@$doGo) echo ”Вы нажали кнопку!”; ?>

Виды комментариев:

операторы // комментарий

# однострочный комментарий

/*

многострочные комментарии (ими лучше не пользоваться! так как они вступают в конфликт с русскими буквами)

*/

Замечания

1 Для вывода значений переменных, переданных из форм, нужно использовать оператор print и указывать метод передачи данных: print ”Ваше имя:”.$_GET[’name’];

print ”Ваше имя:”.$_POST[’name’];

2 Условные обозначения при использовании стандартных функций PHP:

  • string – обычная строка, или тип, который можно перевести в строку;

  • int, long – целое число, либо вещественное число (в последнем случае дробная часть отсекается), либо строка, содержащая число в одном из перечисленных форматов. Если строку не удается перевести в int, то вместо нее подставляется 0, и никаких предупреждений не генерируется!

  • double, float – вещественное число, или целое число, или строка, содержащая одно из таких чисел.;

  • bool – логический тип, который будет восприниматься либо как ложь (нулевое число, пустая строка или константа false), либо как истина (все остальное);

  • array – ассоциативный массив;

  • list – массив с целыми ключами, пронумерованными от 0 и следующими подряд. Так как список является разновидностью ассоциативного массива, то обычно вместо параметров функций типа list можно подставлять и параметры типа array;

  • object – объект какой-то структуры;

  • void – применяется только для определения возвращаемого функцией значения (не возвращает ничего);

  • mixed – все, что угодно. Это может быть целое или дробное число, строка, массив или объект.