В этом модуле мы изучим стрелочные функции в PHP - современный способ создания анонимных функций, введенный в PHP 7.4. Стрелочные функции предоставляют более короткий и удобный синтаксис для написания простых функций, особенно полезных при работе с массивами и callback-функциями. Вы научитесь создавать стрелочные функции, использовать их с array_map, array_filter и другими функциями, а также понимать различия между обычными анонимными функциями и стрелочными функциями.
- Модуль 1: Основы синтаксиса PHP
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Модуль 4: Условные конструкции
- Модуль 5: Циклы
- Модуль 6: Массивы
- Индексированные массивы.
- Ассоциативные массивы.
- Многомерные массивы.
- Добавление элементов в массив.
- Удаление элементов из массива.
- Функция count().
- Функция array_push() и array_pop().
- Функция array_shift() и array_unshift().
- Функция array_merge().
- Функция array_slice().
- Функция array_splice().
- Функция in_array().
- Функция array_search().
- Функция array_keys() и array_values().
- Функция array_unique().
- Функция array_reverse().
- Сортировка: sort(), rsort().
- Сортировка: asort(), arsort().
- Сортировка: ksort(), krsort().
- Функция array_map().
- Функция array_filter().
- Функция array_reduce().
- Функция array_walk().
- Функция array_column().
- Деструктуризация массивов.
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 20: Работа с базами данных MySQLi
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 26: Генераторы и итераторы
- Модуль 27: Reflection API
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
Создание простой стрелочной функции
Заполните пропуски, чтобы создать простую стрелочную функцию, которая удваивает переданное число.
<?php
$double = input1S($x) => input2S;
echo $double(5); // Выведет 10
?>Стрелочная функция с несколькими параметрами
Заполните пропуски, чтобы создать стрелочную функцию, которая складывает два числа.
<?php
$add = input1S => input2S;
echo $add(3, 7); // Выведет 10
?>Найдите ошибку в стрелочной функции
В коде есть синтаксическая ошибка в объявлении стрелочной функции. Найдите и исправьте её.
<?php$square = fn($x) -> $x * $x;echo $square(4);?>Что выведет этот код?
Предскажите, что выведет приведенный код со стрелочной функцией.
<?php
$multiplier = 3;
$multiply = fn($x) => $x * $multiplier;
echo $multiply(5);
?>Использование стрелочной функции с array_map
Используя элементы из банка, заполните пропуски, чтобы создать код, который применяет стрелочную функцию к каждому элементу массива.
<?php
$numbers = [1, 2, 3, 4, 5];
$squared = array_map(input1S, input2S);
print_r($squared);
?>Соберите код с использованием array_filter
Соберите строки в правильном порядке, чтобы отфильтровать только четные числа из массива с помощью стрелочной функции.
$numbers = [1, 2, 3, 4, 5, 6];$evenNumbers = array_filter($numbers, fn($n) => $n % 2 == 0);print_r($evenNumbers);$oddNumbers = array_filter($numbers, fn($n) => $n % 2 != 0);echo "Count: " . count($numbers);Сопоставьте синтаксис функций
Сопоставьте каждый пример с правильным типом функции: обычная анонимная функция или стрелочная функция.
Результат работы стрелочной функции
Определите, что выведет приведенный код.
<?php
$users = [
['name' => 'Alice', 'age' => 25],
['name' => 'Bob', 'age' => 30],
['name' => 'Charlie', 'age' => 35]
];
$names = array_map(fn($user) => $user['name'], $users);
echo implode(', ', $names);
?>Стрелочная функция с использованием внешней переменной
Заполните пропуски, чтобы создать стрелочную функцию, которая использует внешнюю переменную для создания функции сложения.
<?php
$factor = 5;
$multiply = fn($x) => input1S;
echo $multiply(3); // Выведет 15
?>Найдите ошибку в использовании переменной
В коде есть ошибка, связанная с изменением внешней переменной внутри стрелочной функции. Найдите и исправьте её.
<?php$count = 0;$increment = fn() => $count++;$increment();echo $count;?>Восстановите порядок выполнения кода
Восстановите правильный порядок выполнения кода, который использует стрелочные функции для обработки массива чисел.
$numbers = [1, 2, 3, 4, 5];$doubled = array_map(fn($n) => $n * 2, $numbers);$filtered = array_filter($doubled, fn($n) => $n > 5);$result = array_reduce($filtered, fn($sum, $n) => $sum + $n, 0);echo $result;echo $doubled;$sum = 0;Классификация функций
Разнесите элементы по категориям: обычные анонимные функции и стрелочные функции.