Конспект «Числа и строки в PHP»
Функция intval
Функция intval принимает любое значение и всегда возвращает число. Если передать ей обычное число, она вернёт его же. Но если передать строку, функция попробует извлечь из неё число. Получить из строки число можно, если оно идёт в самом начале. Если числа в строке нет или если оно идёт не первым, функция вернёт 0:
keks_log(intval('38 попугаев')); // Выведет: "38"
keks_log(intval('Пятница 13')); // Выведет: "0"Тернарный оператор
Тернарный оператор удобно использовать, если требуется выбрать одно из двух значений:
условие ? значение-1 : значение-2;Если условие истинно, то PHP использует значение-1, а если ложно — значение-2. После условия ставится вопросительный знак, а значения разделяются двоеточием.
<p class="<?= get_product_is_new($id) ? 'new' : 'old' ?>">...</p>У тернарного оператора есть краткая запись:
значение-1 ?: значение-2Краткая запись работает так: если значение-1 истинно, то используется оно. А если ложно, то используется значение-2.
$page = intval($_GET['page']) ?: 1;Ложными в PHP считаются число 0, строки '' и '0', булево значение false и массивы без элементов. Остальные числа, строки и массивы — истинные.
Цикл for
Цикл for похож на while, но синтаксис у него компактнее и при его использовании очень сложно забыть про счётчик.
for (перед циклом; условие; после итерации) {
тело цикла
}Код в круглых скобках состоит из трёх частей, разделённых точкой с запятой:
- код, который выполнится один раз до начала работы цикла. Обычно здесь объявляют переменную-счётчик.
- условие, которое будет проверяться перед каждой итерацией цикла. Если условие истинно, код внутри тела выполнится, если ложно — цикл завершит работу.
- код, который будет выполняться после каждой итерации. Здесь обычно увеличивают переменную-счётчик.
Как и в других циклах, тело цикла for пишут в фигурных скобках.
for ($i = 1; $i <= 9; $i = $i + 1) {
keks_log($i);
}Чтобы внедрить цикл for в шаблон, используем такой синтаксис:
- PHP-теги пишем полностью —
<?php ?>; - вместо фигурных скобок ставим двоеточие —
for ():; - конец цикла обозначаем командой
endfor, после которой идёт точка с запятой.
<ol>
<?php for ($i = 1; $i <= 9; $i = $i + 1): ?> // Начало цикла
<li>...</li> // Тело цикла
<?php endfor; ?> // Конец цикла
</ol>Функция ceil
Функция ceil принимает число и, если оно дробное, округляет его вверх до ближайшего целого:
keks_log(ceil(3.5)); // Выведет: "4"
keks_log(ceil(3.99999)); // Выведет: "4"
keks_log(ceil(3.00001)); // Выведет: "4"В PHP также есть две другие функции для округления: floor и round. Первая округляет вниз, а вторая — в обе стороны до ближайшего целого.
keks_log(floor(3.9)); // Выведет: "3"
keks_log(round(3.4)); // Выведет: "3"
keks_log(round(3.6)); // Выведет: "4"Функция date
Функция date принимает строку-шаблон и возвращает дату в указанном формате.
$now = date('H:i:s d.m.Y');Формат даты задаётся в строке-шаблоне с помощью управляющих символов. Вот некоторые из них:
| Символ | Значение |
|---|---|
| d | День месяца, 2 цифры с ведущим нулём |
| j | День месяца без ведущего нуля |
| F | Полное наименование месяца (на английском) |
| m | Порядковый номер месяца с ведущим нулём |
| n | Порядковый номер месяца без ведущего нуля |
| Y | Порядковый номер года, 4 цифры |
| y | Номер года, 2 цифры |
| H | Часы в 24-часовом формате с ведущим нулём |
| i | Минуты с ведущим нулём |
| s | Секунды с ведущим нулём |
Полный список символов можно посмотреть в документации.
Символы, которые не являются управляющими, функция возвращает без изменений. Поэтому мы можем использовать в строке-шаблоне пробелы, точки и так далее.
По умолчанию функция date возвращает время той временной зоны, которая указана в настройках PHP на сервере. Временную зону можно изменить из сценария с помощью функции date_default_timezone_set. Подробности в документации.
Одинарные и двойные кавычки
В PHP для строк используют как одинарные ', так и двойные " кавычки. В большинстве случаев они работают одинаково, но не всегда. Например, если использовать переменную внутри одинарных кавычек, то выведется её имя. А если внутри двойных, то значение:
$name = 'Думпо';
keks_log('Слона зовут $name'); // Выведет: "Слона зовут $name"
keks_log("Слона зовут $name"); // Выведет: "Слона зовут Думпо"Двойные кавычки помогают избежать запутанной конкатенации. О том, какие ещё есть различия между кавычками, вы можете узнать в документации.