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

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

Тренажер PHP

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

Список тем

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

id: 38998_task1

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

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

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

id: 38998_task2

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

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

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

id: 38998_task3

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

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

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

id: 38998_task4

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

Выберите правильный вариант ответа
<?php
$multiplier = 3;
$multiply = fn($x) => $x * $multiplier;
echo $multiply(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 сек.
Показать подсказку

Соберите код с использованием 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 сек.
Показать подсказку

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

id: 38998_task7

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

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

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

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

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

id: 38998_task9

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

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

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

id: 38998_task10

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

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

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

id: 38998_task11

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

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

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

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"
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру