Чат PHP-разработчиков
Переменные в PHP

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

Всем привет. Сегодня разговор пойдёт о переменных в языке PHP. О том, что это такое и как с этим работать читайте ниже.

Начнём с определения.
Переменная – это какое-то значение, которому соответствует определённое имя.
Как в математике, x = 2 – переменная x равна двум. Здесь x – имя переменной, 2 – её значение.

В PHP переменные начинаются со знака "$".
Например: $x.

Чтобы присвоить переменной значение, используется знак "=", пример:

$x = 2;

Эта операция так и называется – присваивание переменной.

Разумеется, переменной можно присвоить и результат целого выражения. Пример:

$sum = 5 + 10;

А затем использовать её:

echo $sum;

Также мы можем использовать переменные внутри других выражений:

$x = 2 + 3;
$y = ($x * 2) / ($x + 1);

echo $y;

Стоит обратить внимание, что имена переменных в PHP являются регистрозависимыми. То есть $x и $X – две разные переменные.

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

$subscriberEmail = ‘user@email.com’;
$catName = ‘Барсик’;
$dayOfWeek = ‘среда’;

Пример плохого имени:

$result = $b ** 2 - 4 * a * c; // более подходящее название - $discriminant

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

  • Имя переменной должно состоять только из английских слов, и уж тем более только из букв английского алфавита.
    Никаких $imyaKota или тем более $имяКота, строго $catName
  • Имя переменной должно начинаться с маленькой буквы, а следующие слова, содержащиеся в её имени, должны начинаться с большой буквы. Этот стиль называется СamelCase, или "ВерблюжийРегистр"
    Никаких $catname или $CatName, только $catName.
Присоединяйтесь к нам в ВКонтакте и в Facebook, чтобы не пропустить новые уроки. А также вступайте в наш чат PHP-разработчиков в Telegram.
Домашнее задание
  • Присвойте переменным $a и $b значения 3 и 5 соответственно. С помощью третьей переменной $c поменяйте значения этих переменных (в $a будет 5, а в $b будет 3)
  • Проделайте тоже самое, но без использования третьей переменной, при условии что в качестве значений могут быть только целые числа
Онлайн обучение PHP
Путь с полного нуля до джуниора!
Начать бесплатно
Читайте также
Курс программирования на PHP
Подготовка до уровня устройства на работу!
Начать бесплатно
Комментарии (73)


morok.black
<?php
echo 'Решение без переменной.', '<br>';
echo 'Условия :', '<br>';
$a = 3;
$b = 5;
echo 'a = ', $a, '<br>';
echo 'b = ', $b, '<br>', '<br>';
$b = $a * $b;
echo 'Решение :', '<br>';
echo 'a = ', $a = $b / $a, '<br>';
echo 'b = ', $b = $b / $a, '<br>', '<br>', '<br>';
echo 'Решение с переменной.', '<br>';
echo 'Условия :', '<br>';
$c = 3;
$d = 5;
echo 'c = ', $c, '<br>';
echo 'd = ', $d, '<br>', '<br>';
$clipboard = $c;
echo 'Решение :', '<br>';
echo 'c = ', $c = $d, '<br>';
echo 'd = ', $d = $clipboard;
ivashkevich

Отлично! А ещё можно за счёт сложения/вычитания решить задачу:

$a = 3;
$b = 5;
$a = $a + $b; //a = 8
$b = $a - $b; //a = 8, b = 8-5 = 3
$a = $a - $b; //a = 8-3 = 5
Anril34
$a = 10;
$b = 5;
$b = $b - $a;
$a = $a + $b;
$b = $a - $b;
echo $a, $b;
ivashkevich

И так тоже можно =)

phenomg
$a = 2;
$b = 3;
echo "Решение без использования перменной: <br/>";

echo "a = ".$a."<br/>";
echo "b = ".$b."<br/>";

$b = $a + $b;
$a = $b - $a;
$b -= $a;

echo "a = ".$a."<br/>";
echo "b = ".$b."<br/>";

$a = 2;
$b = 3;

echo "Решение с использованием перменной: <br/>";

echo "a = ".$a."<br/>";
echo "b = ".$b."<br/>";

$с = $a;
$a = $b;
$b = $с;

echo "a = ".$a."<br/>";
echo "b = ".$b;
ivashkevich

Отличный вариант домашнего задания!

vityan97@gmail.com

Мне кажется здесь не нужны двойные ковычки, если код написан таким способом, читал что двойные ковычки работают медленнее на 30-40%, а если уж двойные ставить, то можно в них же и определять переменную. Или это не корректно?

ivashkevich

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

Простой пример:

$x = 2;
echo "x = $x"; //выведет x = 2
echo 'x = $x'; //выведет x = $x

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

vityan97@gmail.com

Вот моё решение

echo "Замена а и b с помошью переменной с<br/>";
$a=3;
$b=5;
echo "a=$a b=$b<br/>";
$c=$a;
$a=$b;
$b=$c;
echo "a=$a b=$b<br/>";
echo "Замена a и b без помощи переменных<br>";
$a=3;
$b=5;
echo "a=$a b=$b<br>";
$a=$a*$b;
$b=$a/$b;
$a=$a/$b;
echo "a=$a b=$b";
ivashkevich

Отлично :)

SBTesla
<?php
echo 'Домашнее задание'.'<br>';
// задаем значения переменным
$a = 3;
$b = 5;
// выводим значения переменных
echo " значение переменной а:".$a.'<br>';
echo " значение переменной b:".$b.'<br>';
// изменяем значение переменных а и б
$c = $b - $a; // отнимаем 5- 3  в переменной с
$a = $c + $a;// прибавляем к переменной а 2
$b = $b - $c;// отнимаем из переменной 2
// выводим  сумму измененых переменых
echo 'значение переменной а изменилось на:'.$a.'<br>';
echo 'значение переменной б изменилось на:'.$b.'<br>';
serb2017
<?php
echo "Начальные значения";
$a=2;
$b=5;
echo '<br>','a=', $a , '     b=', $b ;
/*Решение*/
$a = $a * $b ;
$b = $a / $b ;
$a = $a / $b ;
echo '<br>' , "Конечные значения";
echo '<br>','a=', $a , '     b=', $b ;

На экране:
Начальные значения
a=2 b=5
Конечные значения
a=5 b=2

ivashkevich

Очень хорошо, этот вариант еще не предлагали)

markEvillive
<h1>Изменение значения переменных</h1>
      <?php
        $a = 3;
        $b = 5;
        echo "<h3>Исходные значения </h3>";
        echo "a = $a , <br>";
        echo "b = $b , <br> ";
        echo "<h3>Результат</h3>";
        $c = $a + $b;
        echo "c = $c <br>";
        $a = $c - $a;
        $b = $c - $b;
        echo "a = $a <br>";
        echo "b = $b";
      ?>
ivashkevich

Зачем что-то суммировать и вычитать? Можно просто временно положить в $c значение $a, в $a присвоить $b, в $b положить значение из $c.

Сложение и вычитание могут понадобиться для второй задачи, но не для первой. Это лишнее усложнение.

P.S. в HTML по-правильному после тега <h1> должен идти <h2>, а "внутри" уже <h3>. То есть должен соблюдаться порядок вложенности. Можете почитать об этом в уроке про заголовки.

Dasgonder
$a = 3;
$b = 5;
echo "a={$a} b={$b}\n";
$c = $a;
$a = $b;
$b = $c;
echo "a={$a} b={$b}";

Просто меняем местами, верно? Не вычисляем )

$a = 3;
$b = 5;
echo "a={$a} b={$b}\n";
[$a,$b] = [$b,$a];
echo "a={$a} b={$b}";
ivashkevich

Отлично, что сказать :)

baha

Я изучил д/з других пользователей и решил вот так:

$k = 3;
$m = 5;
echo 'k = ', $k, '<br>';
echo 'm = ', $m, '<br>';
$n = $k * $m;
echo 'k = ', $n / $k, '<br>';
echo 'm = ', $n / $m, '<br>';
echo '<br>';
ivashkevich

Ну вот, прекрасное решение!=)

Koala

Через переменную

        echo '<br>';
        $a = 3;
        $b = 5;
        $c = $a;
        $a = $b;
        $b = $c;
        echo $a ,"<br>", $b;

Без переменной

        echo '<br>';
        $a = 3;
        $b = 5;
        $a = $a + $b;
        $b = $a - $b;
        $a = $a - $b;
        echo $a ,"<br>", $b;

P.S: В начале каждого кода <br> делал одном файле :)

slasva
<?php
$a=3;$b=5;$c=$a+$b;$a=$c-3;$b=$c-5;echo $a;echo $b;echo '<br>';
$a=$b+2;$b=$a-2;echo $a;echo $b;
?>
ivashkevich
  1. Не надо всё в одну строчку.
  2. Код не будет работать, если подставить другие исходные данные.
nemo.dont@gmail.com

После того как выполнила, посмотрела, что прислали другие. Наверное, что-то я сделала не так, но все же пришлю свой вариант, чтобы вы побъяснили.

<?php
echo '№1. Решение с переменной', '<br>';
$a=3;
$b=5;
$c=2;
echo 'a=', $a+$c, '<br>';
echo 'b=', $b-$c, '<br><br>';

echo '№2. Решение без переменной', '<br>';

echo 'a=', $a+2, '<br>';
echo 'b=', $b-2, '<br>';
?>
ivashkevich

Смотрите. В начале мы имеем 2 переменные - $a и $b. Мы должны написать какой-то код, который поменяет значения в этих переменных местами. То есть должно получиться вот так:

<?php
$a = 5;
$b = 9;

// ... здесь нужно придумать что написать

echo $a; // выведет 9
echo $b; // выведет 5

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

nemo.dont@gmail.com

ага, думаю поняла )) я не думала, что переменной можно присвоить выражение, которое содержит ее же. попытка номер 2 ))

echo '№1. Решение с переменной', '<br>';
$a=3;
$b=5;

$c=$a;
$a=$b;
$b=$c;

echo $a, '<br>';
echo $b, '<br><br>';

echo '№2. Решение без переменной', '<br>';

$a=3;
$b=5;

$a=$a+$b;
$b=$a-$b;
$a=$a-$b;

echo $a, '<br>';
echo $b, '<br><br>';
ivashkevich

Ну вот, прекрасное решение! =)
Из замечаний - строки склеиваются с помощью символа "." (точка). И в некоторых местах можно было их вообще не разбивать:

echo '№1. Решение с переменной<br>';
Fox-24

Спасибо за урок:)

<?php
// Начальные значения переменных
$a = 3;
$b = 5;

// Вывод
echo "Пока что переменная А равняется $a, а переменная B равняется $b.<br>";

// Если мы хотим изменить переменную, то сделаем так:
$c = $a + $b;

$a = $c - $a;
$b = $c - $b;

echo "Теперь переменная А равняется $a, а переменная B равняется $b.";

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

$a = $b + $a;
$b = $a - $b;
$a = $a - $b;

echo "Теперь переменная А равняется $a, а переменная B равняется $b.";
Fox-24

В первом варианте конечно можно и так, но почему-то первое что хочется сделать это сложить или вычесть =))

// Если мы хотим изменить переменную, то сделаем так:
$c = $a;
$a = $b;
$b = $c;

echo "Теперь переменная А равняется $a, а переменная B равняется $b.";
ivashkevich

Отлично! Именно в таком варианте и ожидалось =)

dsokol-ok
<?php

echo 'Вариант с использованием переменной: <br>';

$a = 3;
$b = 5;
echo 'Входные данные: a = ', $a,', b = ', $b, ';<br>';

$c = $a;
$a = $b;
$b = $c;
echo 'Результат: a = ',$a, ', b = ',$b,';<br><br>';

echo 'Вариант без использования переменной: <br>';

$a = 3;
$b = 5;
echo 'Входные данные: a = ', $a,', b = ', $b, ';<br>';

$a = $a + $b;
$b = $a - $b;
$a = $a - $b;
echo 'Результат: a = ',$a, ', b = ',$b,';<br><br>';

echo 'Профит!';
Ros
/*C переменной*/
$a=3;
$b=5;
$c = $a + $b;
$a=$c-$a;
$b=$c-$b;
echo "a=$a b=$b";
/*Без переменной*/
$a=3;
$b=5;
$a=($a+$b);
$b=($a-$b);
$a=($a-$b);
echo "<br>a=$a b=$b";
ivashkevich

Хорошо, но скобки - лишнее.

Kutkh

ДЗ

// 1 вариант
$a = 3;
$b = 5;

$c = $a;
$a = $b;
$b = $c;

// 2 вариант
$a = 3;
$b = 5;

$a = $a*$b;
$b = $a/$b;
$a = $a/$b;
virtual2018
<?php
$a = 3;
$b = 5;
echo "Исходные данные для первой задачи a = ".$a." b = ".$b.'<br>';
$c = $a;
$a = $b;
$b = $c;
echo "Результат решения a = ".$a." b = ".$b.'<br>';
$a = 2;
$b = 7;
echo "Исходные данные для второй задачи a = ".$a." b = ".$b.'<br>';
$b = $a + $b;
$a = $b - $a;
$b = $b - $a;
echo "Результат решения a = ".$a." b = ".$b.'<br>';

echo "P.S: чужие решения рекомендую спрятать за спойлер";
bibelman
<?php
// Задание 1
$a = 3;
$b = 5;
$c = $a; 
$a = $b;
$b = $c;

// Задание 2
$a = 3;
$b = 5;
$a = $a + $b; // $a = 3 + 5 = 8
$b = $a - $b; // $b = 8 - 5 = 3
$a = $a - $b; // $a = 8 - 3 = 5

?>
Bogdan

получилось вот так..

<?php

$a = 3;
$b = 5;
$c;

echo "перменная а = $a, переменная b = $b<hr>";

//$c = $a;
//$a = $b;
//$b = $c;
//echo "перменная а = $a, переменная b = $b<hr>";

$a += $b;
$b = $a - $b;
$a -= $b;
echo "перменная а = $a, переменная b = $b<hr>";

понравилось решение:

$a = 3;
$b = 5;
echo "a={$a} b={$b}\n";
[$a,$b] = [$b,$a];
echo "a={$a} b={$b}";
ivashkevich

Отлично! Да, решение изящное)

Bocha
<?php
echo 'Изменение двух переменных с помощью третьей переменной', '<br>','<br>';
echo 'Стартовые значения переменных:', '<br>','<br>';
$a=3;
$b=5;
echo 'Стартовые значения переменных:','<br>';
echo "А=$a",'<br>';
echo "B=$b",'<br>','<br>';
$c=$a;
$a=$b;
$b=$c;
echo 'Измененные значения переменных','<br>';
echo "А=$a",'<br>';
echo "B=$b",'<br>','<br>';
echo 'Изменение двух переменных без помощи третьей переменной', '<br>','<br>';
echo 'Стартовые значения переменных:', '<br>','<br>';
$a=3;
$b=5;
echo 'Стартовые значения переменных:','<br>';
echo "А=$a",'<br>';
echo "B=$b",'<br>','<br>';
$a=$b*$a/$a;
$b=$a*3/$b;
echo 'Измененные значения переменных','<br>';
echo "А=$a",'<br>';
echo "B=$b",'<br>','<br>';
?>
Starosta
<?php
$a=3;
$b=5;
$c=0;
$c=$a;
$a=$b;
$b=$c;
echo 'a=', $a, '  b=',$b, '<br>';
$a = 3;
$b = 5;
$a = $a + $b;
$b = $a - $b;
$a = $a - $b;
echo 'a=', $a, '  b=',$b, '<br>';
?>
ivashkevich

Хорошо. В первом случае не нужно присваивать изначально в $c 0

fapchat2@gmail.com
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
</head>
<body>
<h1>Пример встраивания PHP в HTML</h1>
<?php
$a=3;
$b=5;
$a=$b-$a;//2
$b=$b-$a;//3
$a=$a+$b;//5
echo $a , '<br>';//5
echo $b ; ?> <!--  3    -->
</body>
</html>
90auto90@gmail.com
<?php

$a = 3;
$b = 5;
$c = $b;

$a = $c;
$b = $a;

echo 'a = ' . $a . '<br>' . 'b = ' . $b ;
ivashkevich

Ок. А второе?

NrG
<?php 

$a = 3;
$b = 5;

$c = $a;
$a = $b;
$b = $c;
echo $a;
echo '<br>';
echo $b;
echo '<br>';

$a = 3;
$b = 5;

$a = $a + $b;
$b = $a - $b;
$a = $a - $b;
echo $a;
echo '<br>';
echo $b;

?>
peter.fishman@mail.ru

Имя переменной должно начинаться с маленькой буквы, а следующие слова, содержащиеся в её имени, должны начинаться с большой буквы.
...Давно такие правила? ...
а как же $_ ?

Nick

Ну вообще в названиях переменных можно использовать нижний прочерк, и даже цифры (только цифра не должна быть первой). И это не то чтобы правила, это просто стандарты, ничего не мешает их не придерживаться, но так можно усложнить жизнь себе, а тем более другим людям, если будешь с ними работать над проектом. Собственно для этого их и придумали. И на счет "$_", в этом плане я точно ничего сказать не могу, но вроде бы такое именование могут использовать в каких нибудь системных переменных (например $_POST, $_GET, при работе с формами и не только), или как там они называются, сам толком не знаю что это, лишь приблизительно догадываюсь. А начинаются они с нижнего прочерка, дабы с меньшей вероятностью программист мог случайно ее переопределить (по крайней мере мне так кажется, если что гугл всегда в помощь!:) ).

ivashkevich

Давно. Так называются только служебные переменные, встроенные в PHP.

Nick

Я не совсем понял как без третей переменной это сделать, поэтому схитрил и подсмотрел комментарии. Я думал что если переопределить одну переменную, то потеряется информация о ней, но не подумал, что в нее как раз можно записать информацию двух переменных, которую легко извлечь с помощью второй переменной, она выступает чем то вроде "ключа". Я просто был удивлен насколько это простое и гениальное решение. А я думал, что хорошо знаю математику, хехе

ivashkevich

Да, решение простое =)

BONIBLUERIGHT@GMAIL.COM
<?php
$a=3;
$b=5;
$c=$b-$a;
$a=$a+$c;
$b=$b-$c;
echo "$a";
echo "$b";
?>
ivashkevich

Для чего вы используете третью переменную и проделываете арифметические операции? Можно ведь просто в нее положить значение одной из переменных.

lilit
$a = 3;
$b = 5;
$c = $a + $b;
$a = $c - $a;
$b = $c - $b;
echo $a, $b;

Я так понимаю можно умножать еще (делить, вычитать), да?

$a = 3;
$b = 5;
$c = $a;
$a = $b;
$b = $c;
echo $a, $b;

Так же тоже работает? То есть можно спрятать в третью переменную изначальное значение, а затем изменить его, да?

ivashkevich

Для чего вы используете третью переменную и проделываете арифметические операции? Можно ведь просто в нее положить значение одной из переменных. Именно вторым способом и нужно было делать с помощью третьей переменной.

lilit

ааа... что-то я тупанула с заданием.
вот ответ на второе:

$a = 3;
$b = 5;
$a = $a + $b;
$b = $a - $b;
$a = $a - $b;
echo $a, $b;

babls2332@gmail.com

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

<?php
$a = 3;
$b = 5;
$c = 0;
echo 'До<br>';
echo 'a = ' . $a . '<br>';
echo 'b = ' . $b . '<br>';
echo 'c = ' . $c . '<br>';

$c = $a;
$a = $b;
$b = $c;

echo 'После<br>';
echo 'a = ' . $a . '<br>';
echo 'b = ' . $b . '<br>';

echo 'Смена без третьей переменной<br>';

$a = 3;
$b = 5;
echo 'До<br>';
echo 'a = ' . $a . '<br>';
echo 'b = ' . $b . '<br>';

$a = $a + 2;
$b = $b - 2;

echo 'После<br>';
echo 'a = ' . $a . '<br>';
echo 'b = ' . $b . '<br>';
ivashkevich

Во втором способе код не должен ломаться при изменении на входе $a и $b. Для этого вместо числа 2 достаточно будет использовать значение одной из переменных. Посмотрите решение выше.

Grewi
<?php
$a = 3;
$b = 5;
echo 'Задание: поменять значение переменных $a (равно'.$a.') и $b (равно'.$b.'). С использованием переменной $c </br>';

$c = $a + $b; //8
$a = $c - $a; //5
$b = $c - $b; //3
echo 'Решение: </br>значение переменной $a = '.$a.', </br>значение переменной $b = '.$b.'</br></br>';

$a = 3;
$b = 5;
echo 'Задание: поменять значение переменных $a (равно'.$a.') и $b (равно'.$b.'). Без использования третьей переменной 
</br>';

$a = $b * $a; //15
$b = $a / $b; //3
$a = $a / $b; //5

echo '</br>Переменная $a = '.$a.'. </br> Переменная $b = '. $b;

?>
ivashkevich

Второе задание - ок. Первое - усложнено. Можно проще:

$c = $a;
$a = $b;
$b = $c;
p4elka
<?php
$a = 2;
$b = 3;

echo 'a=', $a, '<br>' ;
echo 'b=', $b, '<br>' ;
$b = $b-$a;
$a = $a+$b;
$b = $a-$b;
echo 'switch variables',  '<br>' ;
echo 'a=', $a, '<br>' ;
echo 'b=', $b, '<br>' ;
?>
RomarioLopes
    $a=5; // Объявляем переменную А
    $b=3; // Объявляем переменную В
    $c=8; // Объявляем переменную С

    echo 'Объявляем переменные:', '<br>';
    echo 'Переменная A=', $a, '<br>';
    echo 'Переменная В=', $b, '<br>','<br>';

    echo 'Поменяем местами переменные с помощью третьей переменной:', '<br>';
    echo 'Переменная A=', $c - $a, '<br>';
    echo 'Переменная В=', $c - $b, '<br>','<br>';

    echo 'Поменяем местами переменные без помощи третьей переменной:', '<br>';
    echo 'Переменная A=', $a - 2 , '<br>';
    echo 'Переменная В=', $b + 2 , '<br>','<br>';
RomarioLopes

Ха! Посмотрел потом в комментариях выше, переназначить с помощью третьей переменной выглядит изящнее, чем с арифметическими действиями. Класс! )))

ivashkevich

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

Самый понятный курс PHP
Онлайн-уроки в удобное время!
Начать бесплатно
Популярное за сутки
Онлайн-курсы PHP и MySQL
Обучение с полного нуля до уровня джуниора!
Начать бесплатно
Сейчас читают
Онлайн-курсы PHP и MySQL
Обучение с полного нуля до уровня джуниора!
Начать бесплатно
Новые статьи
Логические задачи с собеседований