为了账号安全,请及时绑定邮箱和手机立即绑定

如何停止在 foreach 循环中向数组中添加更多数据

如何停止在 foreach 循环中向数组中添加更多数据

PHP
动漫人物 2023-10-15 15:18:45
我循环 2 个数组、日期和数据        $rdate = $request->month; //<-- Requested month        $days = Carbon::create();         $days = $days->daysInMonth; //<-- Finding how much days in month        for ($i = 1; $i < $days; $i++) { //Looping Date            $date = $rdate . '-' . $i; //Making full Date with formate 'Y-m-d'            foreach ($games as $game) { //Looping game array have 3 collection ['game1', 'game2', 'game3']                $result = Result::whereDate('created_at', $date)->where('game', $game->name)->where('admin_id', $admin->id)->first(); // Query Results for getting perticular game with date                if ($result) { //Checking if current date haven't result                    $r[] = [                        'game' => $game->name,                        'number' => $result->number                    ];                } else {                    $r[] = [                        'game' => $game->name,                        'number' => '-'                    ];                }            }            $resultd[] = [                'date' => $date,                'results' => $r // i want to stop adding old data here            ];        }我期待这个结果{"results":[{"date":"2020-08-1","results":[{"game":"game1","number":"-"},{"game":"game2","number":"-"},{"game":"game3","number":"-"}]},{"date":"2020-08-2","results":[{"game":"game1","number":"-"},{"game":"game2","number":"-"},{"game":"game3","number":"-"}]实际得到什么将旧的 $r 添加到结果数组中如何修复它我试图打破它但无法弄清楚
查看完整描述

1 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

我有一些未经测试的代码,因为我没有您的数据,但我认为下面的代码应该可以工作,您可能需要根据需要修改一些代码。


        $rdate = '2020-8';

        

        $days = collect([1,2,3]);

        

        $games = collect(['game1', 'game2', 'game3']);

        

        return $days->map(function ($item) use ($rdate,$games) {

            $date = $rdate.'-'.$item;

            

            return [ 

             "date" => $date,

             "results" => $games->map(function ($g) use ($date) {

                 

                 $result = Result::whereDate('created_at', $date)

                                   ->where('game', $g->name)

                                   ->where('admin_id', $admin->id)

                                   ->first();

                                   

                 return ['game' => $g->name,

                         'number' => $result ? $result->number : '-',

                 ];

             })

         ];   

        });


查看完整回答
反对 回复 2023-10-15
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号