Creates a Closure that reduces an array or iterable left-to-right, starting from an initial accumulator. Equivalent to array_reduce but streams Generator input via foreach without materialising it.
/**
* @param callable(mixed $carry, mixed $value): mixed $callable
* @param mixed $initial
* @return Closure(iterable<int|string, mixed>):mixed
*/
Arrays\fold(callable $callable, $initial = []): ClosureWhen Arrays\fold() is called, it returns the following Closure which can be used like a regular function.
/**
* @param iterable<int|string, mixed> $source
* @return mixed
*/
$function (iterable $source)This can be used to create a simple closure which can be used as a regular function.
$sum = Arrays\fold(fn($acc, $n) => $acc + $n, 0);
echo $sum([1, 2, 3, 4]); // 10This can be called inline using currying.
echo Arrays\fold(fn($acc, $n) => $acc * $n, 1)([1, 2, 3, 4]); // 24