/
Программирование
/
Курс PHP
/

Что такое переменная

PHP: Что такое переменная

Представьте, что нужно напечатать фразу Father! два раза:

<?php

print_r('Father!');
print_r("\n");
print_r('Father!');

Такой способ вполне подойдет, если фраза встречается всего пару раз. Но что, если она будет использоваться часто, в разных частях программы? Тогда придется копировать одно и то же выражение снова и снова.

А что будет, если фразу нужно изменить, например заменить Father! на Mother!? Придется искать и исправлять все вхождения вручную. Это неудобно и приводит к ошибкам.

Переменные

Чтобы не дублировать одну и ту же строку, ее можно сохранить в переменной и распечатывать ее содержимое:

<?php

$greeting = 'Father!';

print_r($greeting);
print_r("\n");
print_r($greeting);

Результат:

Father!
Father!

Переменная представляет собой имя, за которым хранится значение. В нашем примере мы создали переменную с именем $greeting и записали в нее строку 'Father!'.

$greeting = 'Father!';

Переменная       Значение
┌───────────┐    ┌──────────┐
│ $greeting │ ──→│ 'Father!'│
└───────────┘    └──────────┘

Строчка $greeting = 'Father!' читается так: "возьми значение 'Father!' и присвой его переменной с именем $greeting". Знак = здесь является оператором присваивания, а не обозначением равенства как в математике. Он кладет значение в переменную.

Когда мы пишем print_r($greeting), интерпретатор подставляет вместо имени $greeting то значение, которое в ней хранится. В результате на экран выводится строка 'Father!'.

print_r($greeting)
        |
        v
print_r('Father!')

Имена переменных

Имена переменных придумывает сам программист. В PHP имя переменной всегда начинается со знака $, а дальше можно использовать:

  • Латинские буквы (a-z, A-Z),
  • цифры (но не в начале),
  • нижнее подчеркивание _.

Примеры допустимых имен: $greeting, $name1, $helloWorld. PHP различает строчные и заглавные буквы. Переменные $greeting, $Greeting и $GREETING являются тремя разными переменными.

Переменные и литералы

В коде важно различать, где мы используем переменную, а где записываем значение напрямую. Это особенно заметно на примере с print_r():

<?php

$greeting = 'Mother!';
print_r($greeting);  // => Mother!
print_r('greeting'); // => greeting

В первом случае используется переменная $greeting, и программа подставляет ее значение. Во втором случае 'greeting' заключено в кавычки, поэтому это строковый литерал, то есть готовое значение, написанное прямо в коде. Здесь различить их помогает знак $, но с точки зрения интерпретатора это в любом случае абсолютно разные вещи.

Литералы представляют собой данные, записанные явно (например, 'Hello', 42, 3.14). Идентификаторы являются именами переменных и функций (например, $greeting, print_r), которые указывают на уже существующие значения или команды.

Порядок использования

Переменную нужно сначала создать (присвоить ей значение), а уже потом использовать. Если попытаться обратиться к переменной до ее создания, программа выдаст предупреждение, а вместо значения подставит "пустоту" — null:

<?php

print_r($name); // Предупреждение: переменная еще не определена
// Warning: Undefined variable $name
$name = 'Alice';

Такая ошибка называется "обращение к необъявленной переменной". Ее достаточно легко исправить, потому что текст предупреждения однозначно говорит о том, какая переменная используется до объявления. К таким же предупреждениям приводят и опечатки в имени переменной — правильно настроенный редактор подсвечивает имена, которые используются без объявления.

А в правильном порядке все работает:

<?php

$name = 'Alice';
print_r($name); // => Alice

Несколько переменных в программе

В одной программе можно создать сколько угодно переменных. Каждая хранит свои данные и не мешает другим:

<?php

$greeting1 = 'Father!';
print_r($greeting1);
print_r($greeting1);

$greeting2 = 'Mother!';
print_r($greeting2);
print_r($greeting2);

Как понять, когда нужно несколько переменных? Количество переменных зависит от логики программы. Эта тема подробно раскрывается позже, когда мы столкнемся с функциями и условными конструкциями.

Где создавать переменные

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

Задание

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

Создайте переменную $url со значением https://hexlet.io и выведите ее на экран дважды — каждое значение на своей строке. Для перевода строки используйте \n.

Полезное

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются