【问题标题】:Find consecutives values in an array and create an array grouped by their count查找数组中的连续值并创建一个按其计数分组的数组
【发布时间】:2016-09-08 00:30:20
【问题描述】:

我有这种数组:

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

它很好用,但我不知道如何用更多组填充数组

感谢您的帮助

【问题讨论】:

  • 我不太明白你在尝试中究竟做了什么,但你可以这样做:3v4l.org/MGRPk

标签: php arrays algorithm loops populate


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 2012-09-11
    • 2016-10-15
    相关资源
    最近更新 更多