php - 在数组中查找连续值并创建按其计数分组的数组

标签 php arrays algorithm loops populate

我有这种数组:

[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;
    }
}

DEMO

关于php - 在数组中查找连续值并创建按其计数分组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39380880/

相关文章:

php - 动态生成 map

algorithm - 求最近点对这七点的解释

java - 使用递归反向双链表

python - 我应该如何对这些元素进行分组,以使总体差异最小化?

php - 如何在 php 和 mysql 中编写对该表的查询搜索

php - 如何在独立函数之间共享同一个变量

javascript - ArrayList 奇怪的问题

arrays - 检查数组是否包含某些东西 - Swift 4

c++ - 在 C++11 中初始化 C++ std::array of struct

php - 来自 Php 和数据库的嵌套 JSON 文件