为了账号安全,请及时绑定邮箱和手机立即绑定

如果所有值都等于 0,则删除数组中的系列

如果所有值都等于 0,则删除数组中的系列

PHP
明月笑刀无情 2021-10-15 15:52:48
我想查看一个名为$rows. 对于 中的每个不同系列ifDesc,如果全部 Octets都0删除它们,但是如果单个条目 > 0,则保留整个系列,包括该不同的 0ifDesc我尝试使用 foreach 使用 PHP 或 JavaScript(因为它作为 ajax 响应传递)循环遍历这个,但是我在使用不同的 ifDesc这是为了可读性而编码的数组 json。当这些数据被传递到图表时,我希望消除图表底部所有值都为 0 的一系列线。在上面的数组中,我希望删除imq0 - In, lo - In&lo - Out作为 all Octets= 0的总和。
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

在 Ghost 的回答的帮助下,我们计算了每个不同的总和,ifDesc如果它 > 0,我们将添加到一个新数组中。


$ifDescs = array_unique(array_column($rows, 'ifDesc'));

$recalculatedRows = [];

foreach ($ifDescs as $currentIfDesc) {

    $current_batch = [];

    foreach ($rows as $k => $row) {

        if ($row['ifDesc'] === $currentIfDesc) {

            $current_batch[$k] = $row;

        }

    }

    if (array_sum(array_column($current_batch, 'Octets')) > 0) { //sum of Octets > 0 ?

        foreach ($current_batch as $r) { //if yes, loop through $current_batch

            $recalculatedRows[] = $r; //adding series to new array

        }

    }

}

echo json_encode($recalculatedRows);


查看完整回答
反对 回复 2021-10-15
?
慕容708150

TA贡献1831条经验 获得超4个赞

我会做的一种方法是先获取所有ifDescs。收集所有 em 后,您可以开始处理实际数组以删除ifDesc总和为零的s批次。


$ifDescs = array_unique(array_column($rows, 'ifDesc')); // get all ifDescs

foreach ($ifDescs as $currentIfDesc) { // loop each ifDesc batches

    $current_batch = []; // set initial batch of ifDesc type for temporary container

    foreach ($rows as $k => $row) { // group them first

        if ($row['ifDesc'] === $currentIfDesc) {

            $current_batch[$k] = $row;

        }

    }

    $non_zero_octets = array_sum(array_column($current_batch, 'Octets')) > 0; // get all octets of the current batch iteration, and check if its greater than one when summed

    if (!$non_zero_octets) { // if not greater than zero

        $rows = array_diff_key($rows, array_keys($current_batch)); // remove em using all the keys

    }

}

但对于它的价值。我同意 Barmar 使用查询的解决方案,以便它可以更好地扩展。


查看完整回答
反对 回复 2021-10-15
  • 3 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信