搜尋

首頁  >  問答  >  主體

如何從 Laravel 數組中刪除值

我正在嘗試建立一個非常基本的每日預訂系統,需要返回一個範圍內的所有日期,然後從該範圍中刪除選定的日期。我嘗試了以下程式碼,但意識到這會刪除重複項,這很好,但我也需要刪除該日期。

誰能提出一個好的方法來做到這一點?

在下面的範例中,我只是希望看到:

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粉805535434236 天前489

全部回覆(1)我來回復

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

    意味著

    回覆
    0
  • 取消回覆