Rumah > Soal Jawab > teks badan
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粉1868974652024-04-01 09:57:25
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