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

Menjana koleksi Larave berurutan

Johnathan Smith
Johnathan Smithasal
2025-03-06 01:02:12460semak imbas

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]

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;
    }
}

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:
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