如何将包含多组title和start的PHP数组传递给FullCalendar 3
处理方案
1. 修正PHP数组结构
你当前写的关联数组使用日期作为键名,PHP中关联数组的键名唯一,同个日期的多个条目会出现后定义的覆盖先定义的问题,需要先调整为存储多条独立日程的二维结构:
如果你是自行构造数据源,直接按以下格式定义:
$arrayDate = [ [ "title" => "SG-12345-0 : xx, yy", "start" => "2021-12-02" ], [ "title" => "SG-156645-0 : aa, bb", "start" => "2021-12-03" ], [ "title" => "SG-13435-0 : cc, dd", "start" => "2021-12-02" ], [ "title" => "SG-76864-0 : ee, ff", "start" => "2021-12-04" ] ];
如果你拿到的原始数据就是日期=>标题的键值对集合,用以下代码转换:
// 先把原始数据调整为不会覆盖同日期条目的二维结构(避免关联数组同键覆盖) $rawData = [ ["2021-12-02" => "SG-12345-0 : xx, yy"], ["2021-12-03" => "SG-156645-0 : aa, bb"], ["2021-12-02" => "SG-13435-0 : cc, dd"], ["2021-12-04" => "SG-76864-0 : ee, ff"] ]; $formattedEvents = []; foreach ($rawData as $item) { foreach ($item as $date => $title) { $formattedEvents[] = [ 'title' => $title, 'start' => $date ]; } }
2. 前端直接传入处理好的数组
格式化后的数组本身就是FullCalendar要求的事件列表结构,直接json_encode后赋值给events属性即可,不需要额外套数组:
$(document).ready(function() { var events = <?php echo json_encode($formattedEvents); ?>; $('#calendar').fullCalendar({ defaultDate: '2021-12-02', eventLimit: true, events: events }); });
内容的提问来源于stack exchange,提问作者Anu
相关产品推荐
相关产品推荐

