Главная Статьи Написать
 
Начнём
Введение
Инсталяция
Конфигурирование
Безопасность
Справочник Языка
Базовый синтаксис
Типы
Переменные
Константы
Выражения
Операции
Структуры управления
Функции
Классы и Объекты
Ссылки. Разъяснение.
Возможности
Обработка Ошибок
Создание изображений и манипуляции с ними
HTTP-аутентификация в PHP
Куки
Обработка загрузки файлов
Использование удалённых файлов
Обслуживание соединений
Постоянные соединения с базами данных
Безопасный режим
Использование PHP из командной строки
Функции. Справочник.
Функции, специфические для Apache
Array-функции
Aspell-функции [не рекомендуются]
BCMath математические функции произвольной точности
Bzip2 Compression-функции
Calendar-функции
CCVS API-функции
Функции поддержки COM для Windows
Class/Object-функции
ClibPDF-функции
Crack-функции
CURL, Client URL Library-функции
Cybercash payment-функции
Crédit Mutuel CyberMUT-функции
Cyrus IMAP -функции администрирования
Функции типов символов
Функции абстрактного слоя БД (dbm-стиль)
Дата и Время
dBase-функции
DBM-функции
dbx-функции
DB++-функции
Direct IO-функции
Функции директорий
DOM XML-функции
.NET-функции
Обработка ошибок и логинг
FrontBase-функции
filePro-функции
Функции файловой системы
Forms Data Format-функции
FriBiDi-функции
FTP-функции
Функции работы с функциями
Gettext
GMP-функции
HTTP-функции
Hyperwave-функции
Hyperwave API-функции
ICAP-функции [не рекомендуются]
iconv-функции
Image-функции
IMAP, POP3 и NNTP-функции
Informix-функции
InterBase-функции
Ingres II-функции
IRC Gateway-функции
Java
LDAP-функции
Mail-функции
mailparse-функции
Mathematical-функции
Многобайтные строки
MCAL-функции
Mcrypt Encryption-функции
Mhash-функции
Mimetype-функции
Microsoft SQL Server-функции
Ming-функции для Flash
Прочие функции
mnoGoSearch-функции
mSQL-функции
MySQL-функции
Mohawk Software -функции обработчика сессии
muscat-функции
Network-функции
Ncurses -функции управления терминалом
Lotus Notes-функции
Unified ODBC-функции
Oracle 8-функции
OpenSSL-функции
Oracle-функции
Ovrimos SQL-функции
Управление выводом
Перегрузка свойств объектов и вызовов методов
PDF-функции
Verisign Payflow Pro-функции
PHP. Опции & Информация
POSIX-функции
PostgreSQL-функции
Управление процессом
Выполнение программы
Printer-функции
Pspell-функции
GNU Readline
GNU Recode-функции
Функции регулярных выражений (Perl-совместимые)
qtdom-функции
Функции регулярных выражений (POSIX расширенная)
Semaphore, Shared Memory и IPC-функции
SESAM database-функции
Обслуживание сессий
Shared Memory-функции
Shockwave Flash-функции
SNMP-функции
Socket-функции
String-функции
Sybase-функции
URL-функции
Функции переменных
vpopmail-функции
W32api-функции
WDDX-функции
XML parser-функции
XMLRPC-функции
XSLT-функции
YAZ-функции
YP/NIS-функции
Zip File-функции (доступ только для чтения)
Zlib Compression-функции
Расширение PHP 4.0
Обзор
Возможность расширения
Строение исходного кода
Система автоматического построения РНР
Создание расширений
Использование расширений
Решение проблем
Исходные Ресурсы. Обсуждение.
Приём аргументов
Создание переменных
Дублирование содержимого переменной: конструктор Copy
Возвращаемые значения
Печать информации
Startup и Shutdown-функции
Вызов пользовательских функций
Поддержка файлов инициализации
Что дальше?
Справочник: некоторые макросы конфигурации
Макросы API
FAQ: Frequently Asked Questions
Общая информация
Списки рассылки
Получение PHP
Вопросы о базах данных
Инсталяция
Проблемы построения
Использование PHP
PHP и HTML
PHP и COM
PHP и другие языки
Переход от PHP 2 к PHP 3
Переход от PHP 3 к PHP 4
Другие вопросы
Приложения
История PHP и смежных проектов
Переход от PHP 3 к PHP 4
Переход от PHP/FI 2 к PHP 3
Отладка PHP
Расширение PHP
Список псевдонимов функций
Список зарезервированных слов
Список типов ресурсов
Список лексем разборщика
Об этом учебнике




Основы

Переменные в PHP представлены знаком dollar с последующим именем переменной. Имя переменной чувствительно к регистру символов.

Имена переменных следуют тем же правилам, что и другие метки в PHP. Правильное имя переменной начинается с буквы или символа подчёркивания, с последующими (в любом количестве) буквами, числами или символами подчёркивания. Это можно выразить в виде регулярного выражения:

'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

Примечание: для наших целей здесь - буквы это a-z, A-Z и ASCII-символы от 127 до 255 (0x7f-0xff).

$var = "Bob";
$Var = "Joe";
echo "$var, $Var";      // выводит "Bob, Joe"

$4site = 'not yet';     // неправильно; начинается с числа
$_4site = 'not yet';    // правильно; начинается с символа подчёркивания/underscore
$täyte = 'mansikka';    // правильно; 'ä' это ASCII 228.

В PHP 3 переменные всегда присваиваются по значению. То есть, если вы присваиваете выражение переменной, всё значение оригинального выражения копируется в переменную назначения. Это означает, к примеру, что после присвоения одной переменной другой переменной, изменение одной из этих переменных не повлияет на другую. Дополнительно об этом виде присвоения см. раздел Выражения.

PHP 4 предлагает другой способ присвоения значений переменным: присвоение по ссылке. Это означает, что новая переменная просто ссылается на (иначе говоря, "становится псевдонимом" или "указывает на") оригинальную переменную. Изменения в новой переменной отражаются на оригинале, и наоборот. Это означает также, что никакого копирования не происходит; таким образом, присвоение происходит быстрее. Однако любое ускорение будет заметно только в длинных циклах или при присвоении больших массивов или объектов.

Для присвоения по ссылке просто присоедините амперсанд (&) к началу имени переменной (исходной переменной). Например, следующий фрагмент кода выводит 'My name is Bob' дважды:

<?php
$foo = 'Bob';              // присваивается 'Bob' переменной $foo
$bar = &$foo;              // ссылка на $foo через $bar
$bar = "My name is $bar";  // изменение $bar
echo $bar;
echo $foo;                 // $foo также изменилась
?>

Важно отметить, что по ссылке можно присвоить только именованные переменные.

<?php
$foo = 25;
$bar = &$foo;      // правильное присвоение
$bar = &(24 * 7);  // неверно; ссылка на неименованное выражение

function test()
{
   return 25;
}

$bar = &test();    // неправильно
?>