在数组中查找连续值并创建按其计数分组的数组
Find consecutives values in an array and create an array grouped by their count
我有这种数组:
[0 => 0, 1 => 0, 2 => 0, 3 => 1, 4 => 1, 5 => 0, 6 => 0]
所以它的 0
区域与 1
区域相交,但我只对 0
区域感兴趣
所以我试图实现的是将每个值为 0 的值分组到另一个计数数组中,如下所示:
[Group1 => 3, Group2 => 2]
到目前为止我做了什么:
$arrayGroups = [];
for($i=0;$i < count($myArr);$i++) {
if($myArr[$i] == 0 && $myArr[$i+1] != 1) {
(isset($arrayGroups [0])) ? $arrayGroups [0] += 1 : $arrayGroups [0] = 1;
}
}
它很好用,但我不知道如何用更多组填充数组
感谢您的帮助
使用每当新组开始时递增的计数器变量。
$counter = 0;
$in_group = false;
$arrayGroups = [];
foreach ($myArr as $val) {
if ($val == 0) {
if ($in_group) {
$arrayGroups[$counter]++;
} else {
$in_group = true;
$counter++;
$arrayGroups[$counter] = 1;
}
} else {
$in_group = false;
}
}
我有这种数组:
[0 => 0, 1 => 0, 2 => 0, 3 => 1, 4 => 1, 5 => 0, 6 => 0]
所以它的 0
区域与 1
区域相交,但我只对 0
所以我试图实现的是将每个值为 0 的值分组到另一个计数数组中,如下所示:
[Group1 => 3, Group2 => 2]
到目前为止我做了什么:
$arrayGroups = [];
for($i=0;$i < count($myArr);$i++) {
if($myArr[$i] == 0 && $myArr[$i+1] != 1) {
(isset($arrayGroups [0])) ? $arrayGroups [0] += 1 : $arrayGroups [0] = 1;
}
}
它很好用,但我不知道如何用更多组填充数组
感谢您的帮助
使用每当新组开始时递增的计数器变量。
$counter = 0;
$in_group = false;
$arrayGroups = [];
foreach ($myArr as $val) {
if ($val == 0) {
if ($in_group) {
$arrayGroups[$counter]++;
} else {
$in_group = true;
$counter++;
$arrayGroups[$counter] = 1;
}
} else {
$in_group = false;
}
}