Функция array_reduce() в PHP используется для итерации по массиву и применения к его элементам функции, которая сводит все элементы массива к единому значению.
Синтаксис:
array_reduce(array $array, callable $callback, mixed $initial = null): mixed
- $array — массив, к элементам которого будет применяться функция.
- $callback — анонимная функция (или метод), которая применяется к каждому элементу массива. Эта функция должна принимать два аргумента: накопленное значение (аккумулятор) и текущий элемент массива.
- $initial — начальное значение для аккумулятора. Если не указано, то используется первое значение массива.
Пример 1: Суммирование всех элементов массива
$array = [1, 2, 3, 4, 5];
$result = array_reduce($array, function($carry, $item) {
return $carry + $item;
});
echo $result; // Вывод: 15
Здесь:
$carry— это накопленное значение (накапливает сумму).$item— текущий элемент массива.- Функция складывает все элементы массива, начиная с начального значения (по умолчанию 0).
Пример 2: Нахождение произведения всех элементов массива
$array = [1, 2, 3, 4];
$result = array_reduce($array, function($carry, $item) {
return $carry * $item;
}, 1); // Начальное значение - 1
echo $result; // Вывод: 24
Здесь мы используем начальное значение 1, чтобы умножать все элементы массива. Результат — произведение всех элементов массива.
Пример 3: Слияние строк в одну
$array = ["Hello", "world", "from", "PHP"];
$result = array_reduce($array, function($carry, $item) {
return $carry . ' ' . $item;
});
echo $result; // Вывод: "Hello world from PHP"
В этом примере мы сливаем все строки массива в одну строку с пробелами между словами.
Пример 4: Нахождение максимального значения в массиве
$array = [4, 2, 8, 1, 5];
$result = array_reduce($array, function($carry, $item) {
return ($carry > $item) ? $carry : $item;
});
echo $result; // Вывод: 8
Здесь мы используем функцию для нахождения максимального значения в массиве.
Пример 5: Преобразование массива в ассоциативный массив
$array = [1, 2, 3, 4];
$result = array_reduce($array, function($carry, $item) {
$carry[$item] = $item * $item;
return $carry;
}, []);
print_r($result);
// Вывод
Array
(
[1] => 1
[2] => 4
[3] => 9
[4] => 16
)
В этом примере мы создаём ассоциативный массив, где ключи — это элементы массива, а значения — их квадраты.
Как работает array_reduce():
- Функция начинает с начального значения (если оно указано).
- Она проходит по каждому элементу массива, передавая его вместе с текущим значением аккумулятора в callback-функцию.
- Результат работы callback-функции становится новым значением аккумулятора, который передается в следующий вызов функции.
- Когда массив полностью обработан, возвращается окончательное значение аккумулятора.
Это очень удобная функция для выполнения различных операций на массивах, сводящих данные к одному значению, будь то сумма, произведение, строка или что-то другое.
