Php 计算对象中的元素数

Php 计算对象中的元素数,php,laravel,laravel-5,Php,Laravel,Laravel 5,我有一个提交模型,通过查询,我得到了所有提交的列表。然后为了进入每个提交,我使用了一个循环 foreach ($submissions as $submission) { } 每个提交都有以下要素 [original:protected] => Array ( [id] => 1 [sessionKey] => dfshduifhsduifhsdiu [number] => 9 [isCompleted] => 0

我有一个提交模型,通过查询,我得到了所有提交的列表。然后为了进入每个提交,我使用了一个循环

foreach ($submissions as $submission) {

}
每个提交都有以下要素

[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
)
我想做的是生成一个数组,输出关于所有提交内容的一些细节。我需要的第一件事是提交的总数量。接下来,我需要完整(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语句,如果可能的话,我希望避免使用这些语句

任何关于我如何正确构建此结构的建议,都将不胜感激


谢谢

简单的方法是放下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;
}

简单的方法是放下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;
}

提交数据是来自sql语句还是来自其他来源?它来自使用->get()的Elequent查询提交数据是来自sql语句还是来自其他来源?它来自使用->get()的Elequent查询我将对$report['completeCount']和$report['completeCount'求和为了避免再进行一次简单的选择谢谢,这很完美我认为您不会有任何性能改进,因为它已经是内存中的一个对象,而不是数据库的查询,但您可以这样做…为了避免再进行一次简单的选择谢谢,我会将$report['completeCount']和$report['completeCount']相加,这是完美的,我认为您不会有任何性能改进,因为它已经是内存中的一个对象,而不是数据库的查询,但您可以这样做。。。