如何从 Laravel 数组中删除值
P粉805535434
P粉805535434 2024-03-31 21:54:37
0
1
458

我正在尝试创建一个非常基本的日预订系统,需要返回一个范围内的所有日期,然后从该范围中删除选定的日期。我尝试了以下代码,但意识到这会删除重复项,这很好,但我也需要删除该日期。

谁能提出一个好的方法来做到这一点?

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

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

全部回复(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"
}

意味着

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!