Maison > Questions et réponses > le corps du texte
J'essaie de créer un système de réservation journalière très basique et je dois renvoyer toutes les dates d'une plage, puis supprimer les dates sélectionnées de cette plage. J'ai essayé le code suivant mais j'ai réalisé que cela supprimait les doublons, ce qui est bien, mais je dois également supprimer la date.
Quelqu'un peut-il suggérer une bonne façon de procéder ?
Dans l'exemple ci-dessous, je veux juste voir :
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
Pour comparer, les valeurs comparées doivent avoir le même format. J'ai décidé de convertir $datesToRemove au format Carbon. Vous pouvez utiliser des boucles imbriquées et vérifier à l'aide des fonctions 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;
Sortie
{ "2":"2022-04-03T00:00:00.000000Z", "3":"2022-04-04T00:00:00.000000Z", "4":"2022-04-05T00:00:00.000000Z" }
signifie