recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment supprimer des valeurs du tableau Laravel

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粉805535434P粉805535434239 Il y a quelques jours497

répondre à tous(1)je répondrai

  • P粉186897465

    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

    répondre
    0
  • Annulerrépondre