PHP: Комбинирование операций и функций
Логические операции являются выражениями, поэтому их можно комбинировать с другими выражениями. Например, мы хотим проверить четность числа, то есть его кратность двум. В программировании для этого проверяют остаток от деления на два. Если остаток равен 0, число четное. Если остаток не равен 0, число нечетное.

Остаток от деления является простой, но важной концепцией в арифметике, алгебре, в теории чисел и криптографии. Нужно разделить число на несколько равных групп, и если в конце что-то останется, это и есть остаток от деления.
Делим конфеты поровну между людьми:
- 7 конфет, 2 человека: 2 x 3 + остаток 1 (7 не кратно 2)
- 21 конфету, 3 человека: 3 x 7 + остаток 0 (21 кратно 3)
- 19 конфет, 5 человек: 5 x 3 + остаток 4 (19 не кратно 5)
Оператор % вычисляет остаток от деления:
7 % 2→121 % 3→019 % 5→4
Скомбинируем в одном выражении логический оператор «проверка равенства» === и арифметический оператор % и напишем функцию проверки четности:
<?php
function isEven(int $number): bool
{
return $number % 2 === 0;
}
var_dump(isEven(10)); // => bool(true)
var_dump(isEven(3)); // => bool(false)Приоритет арифметических операций выше логических. Значит, сначала вычисляется арифметическое выражение $number % 2, а затем результат сравнивается с нулем и возвращается результат проверки равенства.
Теперь напишем функцию, которая принимает строку и проверяет, начинается ли эта строка с латинской буквы a.
Алгоритм:
- Получим и запишем в переменную первый символ из строки-аргумента
- Сравним, равен ли символ латинской букве
a - Вернем результат
<?php
function isFirstLetterAnA(string $text): bool
{
$firstLetter = $text[0];
return $firstLetter === 'a';
}
var_dump(isFirstLetterAnA('orange')); // => bool(false)
var_dump(isFirstLetterAnA('apple')); // => bool(true)Чтобы было понятно, что тут происходит, попробуйте проговорить происходящее аналогично тому, как мы расшифровывали процесс в примере с isEven().
Теперь вы знаете, что операции сравнения применяются в программировании наравне с арифметическими. Но помните, что равенство обозначается ===. Так вы не спутаете эту операцию с присваиванием значения переменной.
Задание
Реализуйте функцию isInternationalPhone(), которая проверяет формат указанного телефона. Если телефон начинается с +, значит это международный формат.
<?php
isInternationalPhone('89602223423'); // false
isInternationalPhone('+79602223423'); // trueПолезное
PHP: Комбинирование операций и функций
Логические операции являются выражениями, поэтому их можно комбинировать с другими выражениями. Например, мы хотим проверить четность числа, то есть его кратность двум. В программировании для этого проверяют остаток от деления на два. Если остаток равен 0, число четное. Если остаток не равен 0, число нечетное.

Остаток от деления является простой, но важной концепцией в арифметике, алгебре, в теории чисел и криптографии. Нужно разделить число на несколько равных групп, и если в конце что-то останется, это и есть остаток от деления.
Делим конфеты поровну между людьми:
- 7 конфет, 2 человека: 2 x 3 + остаток 1 (7 не кратно 2)
- 21 конфету, 3 человека: 3 x 7 + остаток 0 (21 кратно 3)
- 19 конфет, 5 человек: 5 x 3 + остаток 4 (19 не кратно 5)
Оператор % вычисляет остаток от деления:
7 % 2→121 % 3→019 % 5→4
Скомбинируем в одном выражении логический оператор «проверка равенства» === и арифметический оператор % и напишем функцию проверки четности:
<?php
function isEven(int $number): bool
{
return $number % 2 === 0;
}
var_dump(isEven(10)); // => bool(true)
var_dump(isEven(3)); // => bool(false)Приоритет арифметических операций выше логических. Значит, сначала вычисляется арифметическое выражение $number % 2, а затем результат сравнивается с нулем и возвращается результат проверки равенства.
Теперь напишем функцию, которая принимает строку и проверяет, начинается ли эта строка с латинской буквы a.
Алгоритм:
- Получим и запишем в переменную первый символ из строки-аргумента
- Сравним, равен ли символ латинской букве
a - Вернем результат
<?php
function isFirstLetterAnA(string $text): bool
{
$firstLetter = $text[0];
return $firstLetter === 'a';
}
var_dump(isFirstLetterAnA('orange')); // => bool(false)
var_dump(isFirstLetterAnA('apple')); // => bool(true)Чтобы было понятно, что тут происходит, попробуйте проговорить происходящее аналогично тому, как мы расшифровывали процесс в примере с isEven().
Теперь вы знаете, что операции сравнения применяются в программировании наравне с арифметическими. Но помните, что равенство обозначается ===. Так вы не спутаете эту операцию с присваиванием значения переменной.
Задание
Реализуйте функцию isInternationalPhone(), которая проверяет формат указанного телефона. Если телефон начинается с +, значит это международный формат.
<?php
isInternationalPhone('89602223423'); // false
isInternationalPhone('+79602223423'); // trueПолезное
Ваше упражнение проверяется по этим тестам
<?php
namespace HexletBasics\Logic\CombineExpressions;
use HexletBasics\Exercise\TestCase;
class SolutionTest extends TestCase
{
public function test()
{
$this->assertFalse(isInternationalPhone('89602223423'));
$this->assertTrue(isInternationalPhone('+79602223423'));
}
}Решение учителя откроется через:
20:00
