【问题标题】:Multiply values in a Collection将集合中的值相乘
【发布时间】:2020-03-14 09:14:38
【问题描述】:

大家好,我有这样的东西,我想将每个对象的“数字”相乘。例如 2(第一个对象编号)x3(第二个对象编号)=6(答案应该是 6)有人知道怎么做吗?数组并不总是相同的。这里它有 2 个对象,但可以更改。

[{"id":7,"date":"2020-03-14","number":2},{"id":20,"date":"2020-03-15","number":3}]  

更新的答案(工作)

                     foreach ($studentDetail as $student){
                     $number = calendar::where('student_id','=',$student['id'])
                            ->where('date','>=',$jsonData->checkin)
                            ->where('date','<',$jsonData->checkout)
                            ->get();
                        Log::info($number );
                        $multiplied= $number ->reduce(function ($carry, $item) {
                             return $carry * $item->number;
                        }, 1);
                        Log::info($multiplied);
                        }

【问题讨论】:

    标签: php arrays laravel multiplication


    【解决方案1】:

    你可以使用Laravel collectionreduce()方法

    reduce 方法将集合缩减为单个值,通过 每次迭代的结果进入后续迭代

    $multiplied= $collection->reduce(function ($carry, $item) {
      return $carry * $item->number;
    }, 1);
    

    【讨论】:

    • 我想将每个对象的编号相乘。例如,第一个对象编号 x 第二个对象编号?
    • 我希望你能理解我的问题。第一个对象编号 = 2,第二个对象编号是 3,我想将它们相乘,而不是像 $item-&gt;number * 3this
    • 嘿,我的工作很糟糕!你的代码正在工作!!!!!!!!!非常感谢。
    • 很高兴为您提供帮助!保持学习。并且不要忘记为答案投票。 :)
    • 我真的很抱歉我不能投票给你的答案,因为我只有 13 名声望。需要 15 声望才能投票。一旦我得到,我一定会这样做。非常感谢!!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 2019-07-09
    • 1970-01-01
    • 2015-09-25
    相关资源
    最近更新 更多