ここにいくつかのアドバイスや推奨される方法が必要です。グルーピングロジックで深いネストコードを避ける
私はSQLクエリによって複数のフィールド(6つ以上)のグループを持っています。私は正しい結果を得ることができます。
私のデフォルトのアプローチは、最後のループ要素を保存して順序付けされた結果を反復して、次の繰り返しでそれをテストすることです。それが変更された場合、結果のリストに追加して移動します。私は、これがこの種の問題を解決する一般的な方法だと思います。
2つのフィールドまでは、私のアプローチは問題ないと思います。しかし、2つ以上のフィールドでグループ化すると、複雑すぎるように見えます。ネストされた条件の数が増えるにつれて、コードは腐敗し始め、維持するのが難しくなります。
これを達成するためのより良い方法はありますか?
は私のデフォルトのアプローチ(1つのフィールド)
$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'];
}