避免在分组逻辑中进行深度嵌套代码



我需要一些建议或推荐的做法。

通过SQL查询,我有一个多字段(六个或更多)组。我正在按正确的顺序得到预期的结果。

我的默认方法是对有序的结果进行迭代,保存最后一个循环元素,以便在下一次迭代中对其进行测试。如果它改变了,我会把它添加到结果列表中,然后继续前进。我认为这是解决这类问题的常见方法。

多达两个领域,我认为我的方法是好的。但当我用两个以上的字段分组时,它似乎过于复杂了。随着嵌套条件的数量增加,代码开始腐烂,看起来很难维护。

有没有更好的方法来实现这一点?

我的默认方法(一个字段)

    $groupOne = null;
    $lastId = null;
    $result = array();
    foreach($orderedData as $item) {
        if ($lastId !== $item['id']) {
            if ($groupOne !== null) {
                $resultList[] = $groupOne;
            }
            $groupOne = new stdClass();
        }
        //rest of the logic
        $lastId = $item['id'];
    }

实际上,我找到了一个更好的方法。在循环的开头,我没有验证所有的分组中断,而是验证最后一个。如果最后一个更改了,那么之前的所有其他更改也必须更新是合乎逻辑的。这简化了我的代码。但我总是乐于接受建议和其他例子。谢谢

最新更新