2016-04-18 6 views
0

ここにいくつかのアドバイスや推奨される方法が必要です。グルーピングロジックで深いネストコードを避ける

私は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']; 
    } 

答えて

0

実は、私はより良い方法を発見しました。すべてのグループブレークを検証するのではなく、ループの始めに、私は最後のものを検証します。最後のものが変更された場合は、前の他のものもすべて更新する必要があります。これは私のコードを簡素化します。しかし、私は常に提案や他の例に触れています。ありがとう。

関連する問題