<?php
function array_group(array $arr1, callable $compare): array {
$groups = [];
$group = [];
$prev = NULL;
foreach ($arr1 as $value) {
if ($group && !$compare($prev, $value)) {
$groups[] = $group;
$group = [];
}
$group[] = $value;
$prev = $value;
}
if ($group) {
$groups[] = $group;
}
return $groups;
}
$arr1 = array(1,2,2,3,1,2,0,4,5,2);
$compare = fn ($a, $b) => $a <= $b;
print_r(array_group($arr1, $compare));
preferences:
24.24 ms | 404 KiB | 5 Q