Heim > Fragen und Antworten > Hauptteil
Ich versuche, ein sehr einfaches Tagesbuchungssystem zu erstellen und muss alle Daten in einem Bereich zurückgeben und dann ausgewählte Daten aus diesem Bereich entfernen. Ich habe den folgenden Code ausprobiert, aber festgestellt, dass dadurch Duplikate entfernt werden, was in Ordnung ist, aber ich muss auch das Datum entfernen.
Kann jemand einen guten Weg vorschlagen, dies zu tun?
Im Beispiel unten möchte ich nur sehen:
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
要进行比较,比较值必须具有相同的格式。我决定将 $datesToRemove 转换为 Carbon 格式。您可以使用嵌套循环并使用 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;
输出
{ "2":"2022-04-03T00:00:00.000000Z", "3":"2022-04-04T00:00:00.000000Z", "4":"2022-04-05T00:00:00.000000Z" }
意味着