<?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)
)
);
- Output for 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
- array (
'Bill' =>
array (
0 =>
array (
'name' => 'Billy Jean',
'filter' => false,
),
2 =>
array (
'name' => 'Bill Clinton',
'filter' => true,
),
),
'Rona' =>
array (
1 =>
array (
'name' => 'Ronald Reagan',
'filter' => true,
),
),
'Mich' =>
array (
3 =>
array (
'name' => 'Michael Jackson',
'filter' => false,
),
),
'John' =>
array (
4 =>
array (
'name' => 'Johnny Cash',
'filter' => false,
),
),
)
- Output for 7.4.0 - 7.4.33
- Parse error: syntax error, unexpected '|', expecting variable (T_VARIABLE) in /in/rQZnu on line 3
Process exited with code 255.
preferences:
85.85 ms | 407 KiB | 5 Q