1

Работа с переменными в языке программирования PHP

Раздел: Программирование на PHP -> Объявление и использование переменных

Основы работы с переменными в PHP

Переменная в PHP представляет собой именованный контейнер для хранения данных. Наиболее распространённый способ объявления и инициализации переменной - использование оператора присваивания =. Имя переменной начинается с символа $, за которым следует идентификатор (буквы, цифры, знак подчёркивания, но не цифра в начале). Регистр символов в именах переменных учитывается.


<?php
$name = 'Иван';         // строка
$age = 25;              // целое число
$height = 1.85;         // число с плавающей точкой
$isStudent = true;      // булево значение
$colors = array('red', 'green', 'blue'); // массив
$person = new stdClass(); // объект
$nothing = null;        // null

echo "Привет, $name! Тебе $age лет.";
?>
  

использование php переменные (использование переменных php)

Привет, Иван! Тебе 25 лет.
  

Типичные ошибки:

  • Использование необъявленной переменной - PHP генерирует warning (уровень E_WARNING), но значение интерпретируется как null.
  • Ошибка синтаксиса при использовании недопустимых символов в имени (например, $first-name).
  • Забывание символа $ перед именем - приводит к синтаксической ошибке.

Решение: всегда объявлять переменные перед использованием, применять проверку isset().

Как создать переменную, которая ссылается на другую?

Присваивание по ссылке позволяет двум именам указывать на одну и ту же область памяти. Для этого используется оператор & перед присваиваемой переменной.


<?php
$a = 10;
$b = &$a;   // $b - ссылка на $a
$b = 20;    // меняет значение и $a, и $b
echo "a = $a, b = $b";
?>
  
a = 20, b = 20
  

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

Как динамически создавать имена переменных?

Переменные переменные (variable variables) используют имя одной переменной как имя другой. Синтаксис: $$имя.


<?php
$varName = 'message';
$$varName = 'Привет, динамический мир!';
echo $message;  // выводит "Привет, динамический мир!"
?>
  
Привет, динамический мир!
  

Ошибка: чрезмерное использование делает код нечитаемым. Безопасность: если имя переменной приходит из внешнего источника, возможна подмена. Лучше применять массивы вместо динамических имён.

Как передать переменную из глобальной области в функцию?

Внутри функции переменные по умолчанию локальны. Для доступа к глобальной используется ключевое слово global или суперглобальный массив $GLOBALS.


<?php
$globalVar = 'Глобальная';
function test() {
    global $globalVar;
    echo $globalVar;
    // или: echo $GLOBALS['globalVar'];
}
test();
?>
  
Глобальная
  

Ошибка: использование global увеличивает связанность кода. Альтернатива - передача переменной как параметра функции. Статические переменные (static) сохраняют значение между вызовами.

Как проверить, определена ли переменная и не равна ли она null?

Функция isset() возвращает true, если переменная объявлена и её значение не null. empty() - также проверяет на пустые значения (0, '', false, array(), null). is_null() - только на null.


<?php
$var = 0;
var_dump(isset($var));   // true
var_dump(empty($var));   // true (0 считается пустым)
var_dump(is_null($var)); // false
$undefined;
var_dump(isset($undefined)); // false
?>
  
bool(true)
bool(true)
bool(false)
bool(false)
  

Распространённая ошибка: путаница между isset() и empty(). Для точной проверки на null используйте is_null(). Удаление переменной - unset($var).

Как задать неизменяемое значение (константу)?

Константы в PHP определяются функцией define() или ключевым словом const (с PHP 5.3). Константы не имеют символа $ и не могут быть изменены после определения.


<?php
define('PI', 3.14159);
const SITE_NAME = 'MySite';
echo PI . ' - ' . SITE_NAME;
?>
  
3.14159 - MySite
  

Отличие от переменных: константы автоматически глобальны, не могут быть удалены, регистр по умолчанию чувствителен. Попытка переопределить константу вызывает ошибку.

Расширенные примеры работы с переменными

1. Использование list() для извлечения значений из массива

Пример

<?php
$info = array('Петр', 30, 'программист');
list($name, $age, $job) = $info;
echo "$name, $age лет, работает $job";
?>
Петр, 30 лет, работает программист

2. Функция compact() для создания ассоциативного массива из переменных

Пример

<?php
$city = 'Москва';
$country = 'Россия';
$data = compact('city', 'country');
print_r($data);
?>
Array
(
    [city] => Москва
    [country] => Россия
)

3. Функция extract() - обратная compact()

Пример

<?php
$arr = array('x' => 10, 'y' => 20);
extract($arr);
echo "x = $x, y = $y";
?>
x = 10, y = 20

Опасность: extract() может перезаписать существующие переменные. Рекомендуется использовать с флагом EXTR_SKIP.

4. Типизация с помощью declare(strict_types=1)

Пример

<?php
declare(strict_types=1);
function sum(int $a, int $b): int {
    return $a + $b;
}
echo sum(5, 10); // 15
// echo sum(5, '10'); // Fatal error: Argument 2 must be int
?>
15

5. Переменные в heredoc и nowdoc

Пример

<?php
$name = 'Анна';
$heredoc = <<<EOT
Привет, $name!
Это heredoc, переменные подставляются.
EOT;
$nowdoc = <<<'EOT'
Привет, $name!
Это nowdoc, переменные не подставляются.
EOT;
echo $heredoc . "\n" . $nowdoc;
?>
Привет, Анна!
Это heredoc, переменные подставляются.
Привет, $name!
Это nowdoc, переменные не подставляются.

6. Использование переменных в циклах с передачей по ссылке

Пример

<?php
$numbers = [1, 2, 3];
foreach ($numbers as &$value) {
    $value *= 2;  // модифицируем исходный массив
}
unset($value); // разрываем ссылку
print_r($numbers);
?>
Array
(
    [0] => 2
    [1] => 4
    [2] => 6
)

После цикла с ссылкой переменная $value остаётся ссылкой на последний элемент. Её сброс через unset() предотвращает неожиданные побочные эффекты.

Использование переменных PHP - comments

En
использование php переменные (php)