<?php
function array_group(array $array, callable|string $callback): array {
$groups = [];
if (!is_callable($callback)) {
return $groups;
}
foreach ($array as $key => $value) {
$groups[call_user_func($callback, $value)][$key] = $value;
}
return $groups;
}
$people = [
["name" => "Billy Jean", "filter" => false],
["name" => "Ronald Reagan", "filter" => true],
["name" => "Bill Clinton", "filter" => true],
["name" => "Michael Jackson", "filter" => false],
["name" => "Johnny Cash", "filter" => false],
];
var_export(
array_group(
$people,
fn($p) => substr($p["name"], 0, 4)
)
);
preferences:
25.58 ms | 406 KiB | 5 Q