我对PHP非常陌生,我认为我正在努力实现的目标超出了我目前的技能水平.我有以下名为$exhibitions的数组:
Array
(
[0] => Array
(
[exhibition_title] => Picasso
[venue_name] => Gallery 1
[room_name] => Room 4
[start_date] => 2023-11-15
[end_date] => 2023-12-10
[room_id] => 261
[exhibition_id] => 3540
[venue_order] => 2
)
[1] => Array
(
[exhibition_title] => Monet
[venue_name] => Gallery 4
[room_name] => Room 2
[start_date] => 2023-10-01
[end_date] => 2023-11-13
[room_id] => 274
[exhibition_id] => 8417
[venue_order] => 1
)
)
我需要做的是使用Start_Date和End_Date创建每个展览开幕的日期范围,然后对于每个日期,基本上复制现有子数组中的其余信息,并将单独的日期附加到子数组的末尾.我想要的输出是:
Array
(
[0] => Array
(
[exhibition_title] => Picasso
[venue_name] => Gallery 1
[room_name] => Room 4
[start_date] => 2023-11-15
[end_date] => 2023-12-10
[room_id] => 261
[exhibition_id] => 3540
[venue_order] => 2
[date] => 2023-11-15
)
[1] => Array
(
[exhibition_title] => Picasso
[venue_name] => Gallery 1
[room_name] => Room 4
[start_date] => 2023-11-15
[end_date] => 2023-12-10
[room_id] => 261
[exhibition_id] => 3540
[venue_order] => 2
[date] => 2023-11-16
)
[2] => Array
(
[exhibition_title] => Picasso
[venue_name] => Gallery 1
[room_name] => Room 4
[start_date] => 2023-11-15
[end_date] => 2023-12-10
[room_id] => 261
[exhibition_id] => 3540
[venue_order] => 2
[date] => 2023-11-17
)
[... etc. for the rest of the dates in the Picasso date range]
[25] => Array
(
[exhibition_title] => Monet
[venue_name] => Gallery 4
[room_name] => Room 2
[start_date] => 2023-10-01
[end_date] => 2023-11-13
[room_id] => 274
[exhibition_id] => 8417
[venue_order] => 1
[date] => 2023-10-01
)
[26] => Array
(
[exhibition_title] => Monet
[venue_name] => Gallery 4
[room_name] => Room 2
[start_date] => 2023-10-01
[end_date] => 2023-11-13
[room_id] => 274
[exhibition_id] => 8417
[venue_order] => 1
[date] => 2023-10-02
)
[27] => Array
(
[exhibition_title] => Monet
[venue_name] => Gallery 4
[room_name] => Room 2
[start_date] => 2023-10-01
[end_date] => 2023-11-13
[room_id] => 274
[exhibition_id] => 8417
[venue_order] => 1
[date] => 2023-10-03
)
[... etc. for the rest of the dates in the Monet date range]
)
我看到了this similar post,并修改了它,使其不是 echo $given_date,而是将其添加到数组中的一个名为"date"的新列中.
foreach ($exhibitions as $key => $value) {
$startDate = strtotime($value['start_date']);
$endDate = strtotime($value['end_date']);
// Loop between timestamps, 24 hours at a time
for ($i = $startDate; $i <= $endDate; $i = $i + 86400 ) {
$given_date = date('Y-m-d', $i );
$exhibitions[$key]['date'] = $given_date;
}
};
问题是,它不是在日期范围内的每个日期添加一个日期,而是只添加范围内的最后一个日期.当我 echo $given_date只是为了确保它迭代每个日期时,它列出了范围内的每个日期,所以我假设我添加新列的方式有问题,但我不知道是什么.
答案看起来很简单,但我就是摸不着头脑.预先感谢您的帮助和专业知识!