Переменные в PHP

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

Переменные устроены точно также. В них можно положить какое-нибудь значение и хранить там, пока оно не понадобится.

Создание переменных

Положить значение в переменную можно следующим образом:

<?php
	$name = 'Иван';
	$age = 20;
?>

В коде выше мы создали переменную $name и положили в неё значение Иван, затем создали переменную $age и присвоили ей значение 20.

Название "переменная" означает, что её значение может меняться во время выполнения скрипта:

<?php
    $name = 'Вася'; // Записали значение в переменную
    $name = 'Петя'; // Перезаписали значение
?>

В некоторых языках переменную нужно сначала "объявить", а затем уже использовать. В PHP объявления нет - переменная создаётся в тот момент, когда вы кладёте в неё значение.
Тем не менее, PHP-программисты часто говорят "объявить переменную" вместо "создать переменную".

<?php
    // Я создаю переменную $name
    // Я объявляю переменную $name
    $name = 'Вася';
?>

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

<?php
    // Я кладу в переменную $age значение 20
    // Я присваиваю переменной $age значение 20
    $age = 20;
?>

Правила именования переменных

1. Название переменной начинается с символа $.

2. Вторым символом может быть буква или символ подчёркивания _

3. Дальше могут идти буквы, символы подчёркивания _ и цифры.

<?php
    $_name // правильно
    $15 // неправильно
    $_15 // правильно
    $name_15 // правильно
    $name-2 // неправильно
?>

Названия переменных регистрозависимы. $name и $Name - это разные переменные.

Вывод значения переменной на экран

Вывести переменную можно с помощью уже известной нам команды echo:

<?php
    $name = 'Иван';
    echo $name; // На экран выведется 'Иван'
?>

Команда echo позволяет вывести на экран сразу несколько значений:

<?php
    $name = 'Иван';
    echo 'Моё имя: ', $name;
?>

Заметьте, мы передали в echo 2 значения, разделив их запятой. Так мы можем передавать сколько угодно значений. Следующие два примера приведут к одинаковому результату:

<?php
    // Вариант 1
    echo 'Путь ';
    echo 'джедая';

    // Вариант 2
    echo 'Путь ', 'джедая';
?>

Также в PHP существует сокращённый синтаксис вывода переменных. Вместо <?php echo можно написать <?=:

<?php
	$f_name = 'Вася';
	$s_name = 'Пупкин';
?>
<h1><?= $f_name, ' ', $s_name ?></h1>

До версии PHP 5.4 сокращённый синтаксис работал только при включении в настройках PHP директивы short_open_tag, которая также позволяет использовать сокращённый открывающий тег <? наравне с <?php. Начиная с PHP 5.4 сокращённый синтаксис <?= работает всегда, независимо от директивы short_open_tag.

Проверка значения переменной

Команда echo не всегда удобна для проверки текущего значения переменной. К примеру, при попытке вывода пустой строки '' на экран не выведется абсолютно ничего. И непонятно, в чём причина - в пустой переменной или неработающем коде.

Поэтому для проверки значения переменной используется функция var_dump():

<?php
    var_dump('Vasya');
    var_dump('');
?>

Результат выполнения скрипта:

string(5) "Vasya" string(0) ""

Как видите, PHP вывел не только содержимое переменной, но ещё и количество символов, и даже тип переменной (string - строка). Типы данных мы подробно рассмотрим на следующих уроках.

Удаление переменных

Удалить существующую переменную можно с помощью функции unset():

<?php
    $var = 5;
    unset($var);
?>

А теперь пришло время немного попрактиковаться.

Задача

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

Напишите скрипт, который:
1. Создаёт переменные с названиями title и content и какими-нибудь значениями.
2. Выводит значение переменной title внутри тега h1, а значение переменной content внутри тега div.

<?php
    $title = 'Заголовок статьи';
    $content = 'Содержимое статьи';

    echo '<h1>', $title, '</h1>';
    echo '<div>', $content, '</div>';
?>

Хочу ещё раз обратить ваше внимание, что это решение не является единственно верным. К примеру, следующий код приведёт к такому же результату:

<?php
    $title = 'Заголовок статьи';
    $content = 'Содержимое статьи';
?>

<h1><?php echo $title; ?></h1>
<div><?php echo $content; ?></div>