所以我有这个代码:
$avaDates = [['date_starts'=>'2024-03-01'],['date_starts'=>'2024-03-09'],['date_starts'=>'2024-04-05'],['date_starts'=>'2024-04-09'],['date_starts'=>'2024-04-15'],['date_starts'=>'2024-05-03']];
$sum = 0;
$months = '';
foreach($avaDates as $date){
$monthCheck = substr($date['date_starts'], 0, -3);
if($months !== $monthCheck){
$months = $monthCheck;
$dateFormat = date("F-Y", strtotime($months));
echo strtolower($dateFormat).' '.$sum."\n";
$sum = 0;
}
$sum ++;
}
实际输出是这样的:
march-2024 0
april-2024 2
may-2024 3
我正在寻找的是这个输出:
march-2024 2
april-2024 3
may-2024 1
似乎无法使逻辑工作,任何帮助将不胜感激,这里是运行我的示例的沙箱的链接:https://onlinephp.io/c/47724
我认为如果您修剪日期值,您可以使用
array_count_values
来获取计数。比如:
$avaDates = [['date_starts'=>'2024-03-01'],['date_starts'=>'2024-03-09'],['date_starts'=>'2024-04-05'],['date_starts'=>'2024-04-09'],['date_starts'=>'2024-04-15'],['date_starts'=>'2024-05-03']];
foreach($avaDates as $key => $date){
$avaDates[$key]['date_starts'] = substr($date['date_starts'], 0, 7);
}
foreach(array_count_values(array_column($avaDates, 'date_starts')) as $date => $count){
echo date('F-Y', strtotime($date . '-01')) . ' ' . $count . PHP_EOL;
}
应该这样做。甚至可以使用
array_map
来缩短它。