So entfernen Sie Werte aus dem Laravel-Array
P粉805535434
P粉805535434 2024-03-31 21:54:37
0
1
528

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粉805535434
P粉805535434

Antworte allen(1)
P粉186897465

要进行比较,比较值必须具有相同的格式。我决定将 $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"
}

意味着

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage