Одна из вещей, которые делают программы — это работа с числами. Если ты читал предыдущий урок, то
наверняка запомнил команду echo
, которая печатает текст и числа. И наверняка ты помнишь,
что в PHP есть операторы
+
, -
, *
, /
(который ты не перепутаешь с обратным
слешем «\»), %
(который обозначает деление с остатком), а дробные числа
пишутся через точку.
Когда выполняется код, нам надо где-то хранить промежуточные результаты и другие данные. Для этого
в программировании используются переменные. Переменная —
это такая штука, в которую можно сохранить какое-то число или строку. У каждой переменной есть имя,
и она обозначается конструкцией вроде $daysPassed
(в начале
всегда ставится знак доллара). Название (daysPassed — «прошлоДней») придумывает программист (это ты).
Чтобы сохранить значение в переменной, используется оператор =
:
$daysPassed = 7;
Надеюсь, ты еще помнишь, что после каждой инструкции ставится точка с запятой?
Эта команда создает переменную $daysPassed
и кладет в нее число 7. Теперь ты можешь,
например, вывести это значение с помощью echo:
echo $daysPassed;
→ напечатает 7
Переменную можно вставить внутрь строки (если она в двойных кавычках, а не в одинарных), чтобы вывести поясняющий текст:
echo "Прошло дней: $daysPassed";
→ выведет Прошло дней: 7
Также, в переменной можно сохранить (присвоить переменной значение, говорят программисты)
строку $name = "Ivan";
или результат вычисления какого-то выражения:
$balance = 1000 + 1000;
.
Не знаешь английский и не можешь придумать имя переменной? Воспользуйся сервисом Яндекс.словари или Google translate, только не пиши по-русски, над тобой же смеяться будут.
Имена переменных могут состоять из латинских букв a-z, A-Z
, цифр 0-9
и
знака подчеркивания _
. Хоть знак подчеркивания и разрешено использовать в имени,
это не рекомендуется. Имена принято начинать с маленькой буквы, а если оно состоит
из нескольких слов, то эти слова, кроме первого, начинаются с большой буквы (это называется
camelCase):
Важно! Регистр букв в имени переменной (большая или маленькая)
имеет значение!
$a
и $A
— это 2 разных переменных (причем вторая еще и названа плохо,
имя должно начинаться с маленькой буквы).
Имя обязательно должно быть осмысленным и обозначать, что хранится в этой переменной. Имена надо писать на английском. Думай о тех, кому придется читать твой код, помни, что код пишется в первую очередь для людей.
W2. Допиши программу, переводящую доллары в рубли, чтобы она работала правильно. Заготовку можешь взять по ссылке http://ideone.com/CsCOBV или http://paste2.org/pE927NmC
Переменные можно использовать в выражениях и складывать, умножать, делить, и т.д. Для того, чтобы
увеличить значение в переменной на 5, можно написать $a = $a + 5;
(мы прибавляем 5 к тому,
что ранее хранилось в переменной и сохраняем результат в нее же), но для таких целей есть более короткая
форма записи: $a += 5;
. Чтобы увеличить переменную на 1, можно писать еще короче:
$a++;
— делает то же самое, что и $a += 1;
.
Эта информация только для тех, кто хочет знать больше необходимого минимума и изучать ее необязательно (хотя и полезно для расширения кругозора).
Интересно, что в PHP почти все операторы, даже такие, как =
возвращают
какое-то значение, потому их можно использовать в выражениях (хотя это запутывает код и делает его
нечитаемым, так что злоупотреблять не стоит). Например, =
возвращает присвоенное
значение и его потому можно использовать так:
$a = ($b = ($c = 1));
или, если убрать скобки, $a = $b = $c = 1;
Сначала выполнится действие $c = 1
, которое присвоит $c
значение 1 и
вернет это значение. Возвращенное значение присвоится $b
, а затем и $a
.
Таким образом, во всех 3 переменных окажется единица.
Операторы +=
, -=
и подобные возвращают увеличенное/уменьшенное
значение. А вот с оператором ++
ситуация сложнее. Его можно записать перед
переменной ++$i
(префиксная форма) и после $i++
(постфиксная форма).
В первом случае сначала увеличивается переменная, и возвращается увеличенное значение, а
во втором — переменная тоже увеличивается, но возвращается исходное значение, которое было
в ней до инкремента.
Кстати, слово инкремент обозначает увеличение на 1, а декремент - уменьшение.
В PHP есть и более сложные операции над числами, например, округление или нахождение максимального из нескольких чисел, они делаются с помощью функций. Запоминать функции наизусть не надо, достаточно просто знать, что они существуют. Вот список основных функций, которые могут пригодиться. Полное их описание ты всегда можешь найти в официальном мануале по PHP.
Функция | Описание | Мануал |
---|---|---|
sqrt($x) |
Считает квадратный корень из числа $x | sqrt |
abs($x) |
Возвращает модуль числа (т.е. абсолютное значение без знака, abs(-5) => 5) |
abs |
mt_rand($a, $b) |
Возвращает случайное целое число от $a до $b | mt_rand |
max($a, $b, $c, $d) |
Возвращает наибольшее из нескольких чисел | max |
min($a, $b) |
Возвращает наименьшее из нескольких чисел | min |
pow($x, $y) |
Возводит $x в степень $y | pow |
pi() |
Возвращает число Пи (3.1415 и так далее) | pi |
floor($x) |
Округляет число вниз (в сторону -∞), например,
floor(3.8) => 3 |
floor |
ceil($x) |
Округляет число в большую сторону (в сторону +∞), например,
ceil(3.1) => 4 |
ceil |
round($x) |
Округляет число по математическим правилам (к ближайшему целому) | round |
round($x, $n) |
Округляет число по математическим правилам (к ближайшему
целому) до $n знаков после запятой, например,
round(3.1415, 2) => 3.14 |
round |
sin($x) |
Считает синус от $x (где $x задается в радианах, а не в градусах). Еще есть
cos($x) , tan($x) , asin($x) , но нам они не понадобятся,
не бойся. |
sin |
Обрати внимание, что функция не меняет значение указанных в скобках переменных, а возвращает новое значение. Его надо сохранить в какую-нибудь переменную, например, так:
<?php
error_reporting(-1);
$a = 25;
$b = sqrt($a);
echo "Если взять корень из $a, получится $b";
Узнать, что хранится в переменной, можно, написав команду var_dump($x);
или
echo $x;
. Переменные также можно подставлять в строку (если она в двойных кавычках),
чтобы вывести какой-то поясняющий текст:
Итак, взяв за основу картинку ниже, выполни задание:
W3. Напиши программу, которая имитирует бросок кубика (генерирует случайное число от 1 до 6 и выводит его).
Подсказка: чтобы получить случайное число, есть функция mt_rand().
Код, заключенный в /* ... */
— это комментарий, интерпретатор его проигнорирует, но в нем ты
можешь оставить коллегам-программистам какое-то полезное сообщение. Специальная последовательность символов
\n
(работает только в строке с двойными кавычками)
называется перевод строки и делает перенос текста на новую строку, без нее
все бы писалось в одну длинную-длинную строчку.
У значений, которые, например, хранятся в переменной, есть свой тип, например, число или строка.
Разница между ними в том, что, например, числа складываются и вычитаются, а строки — нет. Узнать
тип значения в переменной можно, сделав var_dump($x)
— она выведет и тип, и
значение переменной. Всего в PHP 8 типов данных, вот они:
int
и float
— числа. Числа можно складывать, умножать, округлять, и т.д. Разница между
этими 2 типами в том, что int хранит целые числа, а float — дробные. PHP сам преобразует
числа одного типа в другой, когда это надо, потому тебе беспокоиться об этом не надо.string
— строка. Строки по идее нельзя сложить или умножить, потому при попытке это
сделать PHP сначала преобразует их в числа, а потом сложит/умножит получившиеся числа.null
— специальный тип, обозначающий «пустое значение» или «ничто». Его можно
присвоить любой переменной, например $x = null;
. Возможно, этот тип где-то пригодится,
потому он тут упомянут.boolean
, array
, object
и resource
мы
будем изучать позже.Сделал задание? Молодец, переходи к следующему уроку.
-----
Куда вводить код? Что надо скачать? Читай первый урок.
Есть вопросы? Задай гуглу или автору.
Нравится урок? Лайкай, репости, приглашай друзей, пости котов и Канако, шли добра, решай задачи, помогай новичкам! Кнопок для лайка нет, кто хочет зарепостить, всегда может сделать это ручками.
Как связаться с автором? Я хочу переодеть его в платье школьницы и жениться на нем. Ящик codedokode (кот) gmail.com ждет ваших писем. А вконтактик и фейсбучек ждут ваших лайков. Но ответ на банальные вопросы лучше искать в Гугле или на stackoverflow.
Я решил задачку!!! Молодец, делай следующий урок
Ideone не работает!11 Ну так открой Гугл и найди сайты вроде https://repl.it/languages/php , http://phptester.net/ , http://sandbox.onlinephpfunctions.com/ , http://codepad.org/ или http://www.runphponline.com/ . Не ленись.
Почему так много рекламы? Всю рекламу на сайте ставит юкоз (бесплатный хостинг же), а не я.
На сайте установлена система Google Analytics (и еще несколько аналогичных систем от юкоза). Данные о твоем IP-адресе, посещаемых страницах, времени посещения отправляются в Google Corporation, США. Хочу знать, кто и зачем сюда заходит. Поверь, другие сайты делают точно так же. Все сайты пишут логи.