2017-08-01 2 views
0

私はサブミッションモデルを持っており、クエリを使用して、すべてのサブミッションのリストを取得します。次に、各提出に得るために、私はそれぞれの提出は、私がやろうとしていますどのような次の要素オブジェクト内の要素の数をカウントする

[original:protected] => Array 
(
    [id] => 1 
    [sessionKey] => dfshduifhsduifhsdiu 
    [number]  => 9 
    [isCompleted] => 0 
    [created_at] => 2017-07-29 23:14:02 
    [updated_at] => 2017-07-30 00:04:00 
) 

を持っているループ

foreach ($submissions as $submission) { 

} 

を使用することのすべてについて、いくつかの詳細を出力配列を生成で提出物。私が必要とする最初の事は、提出の総数です。次に、完全な(isComplete = 1)と不完全(isComplete = 0)のレコードが必要です。これを達成するために、私はやっています

function submissionSummary($submissions) { 
    $reportArray = array(); 
    $totalCount = 0; 
    $incompleteCount = 0; 
    $completeCount = 0; 

    foreach ($submissions as $submission) { 

     $totalCount += count($submission); 
     $reportArray["total"] = $totalCount; 

     if($submission['isCompleted'] === "0") { 
      $incompleteCount += count($submission); 
      $reportArray["incomplete_count"] = $incompleteCount; 
     } elseif ($submission['isCompleted'] === "1") { 
      $completeCount += count($submission); 
      $reportArray["complete_count"] = $completeCount; 
     } 
    } 

    return $reportArray; 
} 

もっと効果的なやり方があるのでしょうか?

ここで私が苦労しているのは数字要素です。この数字は1から9のいずれかになります。私がしようとしているのは、各番号の数を数えることです。ですから、いくつの提出物に番号要素1があり、何人に2などがあるのか​​を見たいと思います。これを達成するために私が考えることができる唯一の方法は、if文をたくさん使うことです。

これを正しく構成する方法についてのアドバイスはありがたいです。

おかげ

+0

が提出データは、SQL文からまたは他のソースから来ていますか? – Spingolini

+0

これは、> get()を使用したElequentクエリから来たものです –

答えて

3

簡単な方法は、foreachのをドロップすることで、ちょうど行います

function submissionSummary($submissions){ 
    $report = []; // or array() if you prefer 
    $report['completeCount'] = $submissions->where('isCompleted', 1)->count(); 
    $report['inCompleteCount'] = $submissions->where('isCompleted', 0)->count(); 
    $report['totalCount'] = $submissions->count(); 

    return $report; 
} 
+0

もう一つの単純な選択を避けるために、$ report ['completeCount']と$ report ['inCompleteCount']を合計します – ggderas

+0

ありがとう、これは完璧です –

+0

私は 'それはすでにデータベース内のクエリではなくメモリ内のオブジェクトであるため、パフォーマンスの向上は期待できますが、それを行うことができます... –

関連する問題