suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So entfernen Sie Werte aus dem Laravel-Array

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粉805535434P粉805535434239 Tage vor496

Antworte allen(1)Ich werde antworten

  • P粉186897465

    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"
    }

    意味着

    Antwort
    0
  • StornierenAntwort