Rumah > pembangunan bahagian belakang > tutorial php > Menjana koleksi Larave berurutan

Menjana koleksi Larave berurutan

Johnathan Smith
Lepaskan: 2025-03-06 01:02:12
asal
455 orang telah melayarinya

Generating Sequential Laravel Collections

Apabila anda perlu membuat koleksi dengan bilangan unsur yang dikira tertentu, kaedah Times Laravel menyediakan penyelesaian yang elegan. Kaedah ini amat berguna untuk menjana urutan, slot masa, pautan penomboran, atau sebarang senario yang memerlukan lelaran bernombor.

<!-- Syntax highlighted by torchlight.dev -->// Generate multiplication table of 5
$fives = Collection::times(10, function ($number) {
    return $number * 5;
});
// [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
Salin selepas log masuk

mari kita meneroka contoh praktikal penjadual mesyuarat yang menghasilkan slot masa yang tersedia:

<!-- Syntax highlighted by torchlight.dev --><?php

namespace App\Services;

use Carbon\Carbon;
use Illuminate\Support\Collection;

class MeetingScheduler
{
    public function generateTimeSlots(Carbon $date, array $config = []): Collection
    {
        $startTime = $config[&#39;start_time&#39;] ?? &#39;09:00&#39;;
        $endTime = $config[&#39;end_time&#39;] ?? &#39;17:00&#39;;
        $duration = $config[&#39;duration&#39;] ?? 30;

        $slots = $this->calculateSlotCount($startTime, $endTime, $duration);
        return Collection::times($slots, function ($slot) use ($date, $startTime, $duration) {
            $start = Carbon::parse($date->format('Y-m-d') . ' ' . $startTime)
                ->addMinutes(($slot - 1) * $duration);

            $end = $start->copy()->addMinutes($duration);
            return [
                'id' => $slot,
                'start_time' => $start->format('H:i'),
                'end_time' => $end->format('H:i'),
                'formatted' => sprintf(
                    '%s - %s',
                    $start->format('g:i A'),
                    $end->format('g:i A')
                ),
                'is_available' => !$this->isSlotBooked($start, $end)
            ];
        });
    }

    private function calculateSlotCount($start, $end, $duration): int
    {
        $startMinutes = Carbon::parse($start)->diffInMinutes(Carbon::parse($end));
        return (int) floor($startMinutes / $duration);
    }

    private function isSlotBooked(Carbon $start, Carbon $end): bool
    {
        // Check against existing bookings
        return false;
    }
}
Salin selepas log masuk

Kaedah Times memudahkan proses menghasilkan data berurutan, menyediakan cara yang bersih dan cekap untuk membuat koleksi dengan nilai yang dikira.

Atas ialah kandungan terperinci Menjana koleksi Larave berurutan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan