Стрелочные функции

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

Тренажер PHP

В этом модуле мы изучим стрелочные функции в PHP - современный способ создания анонимных функций, введенный в PHP 7.4. Стрелочные функции предоставляют более короткий и удобный синтаксис для написания простых функций, особенно полезных при работе с массивами и callback-функциями. Вы научитесь создавать стрелочные функции, использовать их с array_map, array_filter и другими функциями, а также понимать различия между обычными анонимными функциями и стрелочными функциями.

Список тем

1. Создание простой стрелочной функции

id: 38998_task1

Заполните пропуски, чтобы создать простую стрелочную функцию, которая удваивает переданное число.

Заполните пропуски
<?php
$double = input1S($x) => input2S;
echo $double(5); // Выведет 10
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Стрелочная функция с несколькими параметрами

id: 38998_task2

Заполните пропуски, чтобы создать стрелочную функцию, которая складывает два числа.

Заполните пропуски
<?php
$add = input1S => input2S;
echo $add(3, 7); // Выведет 10
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Найдите ошибку в стрелочной функции

id: 38998_task3

В коде есть синтаксическая ошибка в объявлении стрелочной функции. Найдите и исправьте её.

Найдите ошибку и исправьте
<?php
$square = fn($x) -> $x * $x;
echo $square(4);
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Что выведет этот код?

id: 38998_task4

Предскажите, что выведет приведенный код со стрелочной функцией.

Выберите правильный вариант ответа
<?php
$multiplier = 3;
$multiply = fn($x) => $x * $multiplier;
echo $multiply(5);
?>
Сообщения
Проверить
Показать подсказку

5. Использование стрелочной функции с array_map

id: 38998_task5

Используя элементы из банка, заполните пропуски, чтобы создать код, который применяет стрелочную функцию к каждому элементу массива.

Нужно правильно расставить в пропуски предложенные варианты
<?php
$numbers = [1, 2, 3, 4, 5];
$squared = array_map(input1S, input2S);
print_r($squared);
?>
$numbers
fn($n) => $n * $n
array_filter
[1, 4, 9, 16, 25]
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. Соберите код с использованием array_filter

id: 38998_task6

Соберите строки в правильном порядке, чтобы отфильтровать только четные числа из массива с помощью стрелочной функции.

Перетяните в правильном порядке строки из одного блока в другой
$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);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

7. Сопоставьте синтаксис функций

id: 38998_task7

Сопоставьте каждый пример с правильным типом функции: обычная анонимная функция или стрелочная функция.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
function($x) { return $x * 2; }
fn($x) => $x * 2
function($a, $b) { return $a + $b; }
fn($a, $b) => $a + $b
Стрелочная функция
Стрелочная функция
Обычная анонимная функция
Обычная анонимная функция
Сообщения
Проверить
Показать подсказку

8. Результат работы стрелочной функции

id: 38998_task8

Определите, что выведет приведенный код.

Что должно получиться?
<?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);
?>
Сообщения
Проверить
Показать подсказку

9. Стрелочная функция с использованием внешней переменной

id: 38998_task9

Заполните пропуски, чтобы создать стрелочную функцию, которая использует внешнюю переменную для создания функции сложения.

Заполните пропуски
<?php
$factor = 5;
$multiply = fn($x) => input1S;
echo $multiply(3); // Выведет 15
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

10. Найдите ошибку в использовании переменной

id: 38998_task10

В коде есть ошибка, связанная с изменением внешней переменной внутри стрелочной функции. Найдите и исправьте её.

Найдите ошибку и исправьте
<?php
$count = 0;
$increment = fn() => $count++;
$increment();
echo $count;
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

11. Восстановите порядок выполнения кода

id: 38998_task11

Восстановите правильный порядок выполнения кода, который использует стрелочные функции для обработки массива чисел.

Расставьте строки в правильном порядке
$numbers = [1, 2, 3, 4, 5];
$sum = 0;
$filtered = array_filter($doubled, fn($n) => $n > 5);
echo $doubled;
$doubled = array_map(fn($n) => $n * 2, $numbers);
echo $result;
$result = array_reduce($filtered, fn($sum, $n) => $sum + $n, 0);
Сообщения
Проверить
Показать подсказку

12. Классификация функций

id: 38998_task12

Разнесите элементы по категориям: обычные анонимные функции и стрелочные функции.

Перетяните элементы в соответствующие блоки
Обычные анонимные функции
Стрелочные функции
function($x) { return $x * 2; }
fn($x) => $x * 2
function($a, $b) { return $a + $b; }
fn($a, $b) => $a + $b
function() { echo "Hello"; }
fn() => "Hello"
Сообщения
Проверить
Показать подсказку

PHP: запуск кода в браузере

id: 38998_compiler
🐘
Запустить тренажёр (PHP)
НайтиКурс.Ру