Bagaimana untuk mengalih keluar nilai dari tatasusunan Laravel
P粉805535434
P粉805535434 2024-03-31 21:54:37
0
1
485

Saya cuba mencipta sistem tempahan hari yang sangat asas dan perlu mengembalikan semua tarikh dalam julat dan kemudian mengalih keluar tarikh yang dipilih daripada julat itu. Saya mencuba kod berikut tetapi menyedari ini mengalih keluar pendua, yang baik, tetapi saya perlu mengalih keluar tarikh itu juga.

Bolehkah sesiapa mencadangkan cara yang baik untuk melakukan ini?

Dalam contoh di bawah, saya cuma nak tengok:

2022-04-03T00:00:00.000000Z

2022-04-04T00:00:00.000000Z

2022-04-05T00:00:00.000000Z

$start_date = "2022-04-01";
$end_date = "2022-04-05";

$datesToRemove = [
   '2022-04-01T00:00:00.000000Z',
   '2022-04-02T00:00:00.000000Z'
];

$range = Carbon::parse($start_date)->toPeriod($end_date)->toArray();
$available = array_unique(array_merge($range, $datesToRemove));
return $available;

P粉805535434
P粉805535434

membalas semua(1)
P粉186897465

Untuk membandingkan, nilai yang dibandingkan mesti mempunyai format yang sama. Saya memutuskan untuk menukar $datesToRemove kepada format Karbon. Anda boleh menggunakan gelung bersarang dan menyemak menggunakan fungsi PHP in_array().

$start_date = "2022-04-01";
$end_date = "2022-04-05";

$datesToRemove = [
"2022-04-01T00:00:00.000000Z",
"2022-04-02T00:00:00.000000Z"
];

$range = \Carbon\Carbon::parse($start_date)->toPeriod($end_date)->toArray();
$datesToRemove2 = [];
foreach($datesToRemove as $r) {
    $datesToRemove2[] = \Carbon\Carbon::parse($r);
}

$res = [];
foreach($datesToRemove2 as $index => $d1) {
    if(in_array($d1, $range)) {        
        unset($range[$index]);        
    }
}

return $range;

Output

{
  "2":"2022-04-03T00:00:00.000000Z",
  "3":"2022-04-04T00:00:00.000000Z",
  "4":"2022-04-05T00:00:00.000000Z"
}

bermaksud

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan