我正在努力从数据库构建一个多维数组以在日历中显示数据......基本上,我有一个表,其中总是有日期、描述和事件的链接。然后我想在日历中显示该数据,并找到了一个 php 编程的小日历,看起来不错。
现在这个 PHP 代码需要一个
$events
变量来显示事件,数组的结构必须如下:
$events = [
'2020-04-05' => [
'text' => "An event for the 5 july 2015",
'href' => "http://example.com/link/to/event"
],
'2020-04-23' => [
'text' => "An event for the 23 july 2015",
'href' => "/path/to/event"
],
];
现在,由于我在 PHP 中没有过多地处理多维数组(除了作为数据库结果接收的数组),我尝试构建这个数组,但我似乎无法..
我从数据库中得到的是一个数组,如下所示:
array (
0 =>
array (
'ID' => '1',
'link' => 'example.com/link',
'description' => 'that\'s a description',
'eventDate' => '2020-04-07 01:04:25',
),
1 =>
array (
'ID' => '6',
'link' => 'example.com/link',
'description' => 'that\'s a description',
'eventDate' => '2020-04-15 00:00:00',
),
2 =>
array (
'ID' => '7',
'link' => 'example.com/link',
'description' => 'that\'s a description',
'eventDate' => '2020-04-16 07:24:11',
),
3 =>
array (
'ID' => '8',
'link' => 'example.com/link',
'description' => 'that\'s a description',
'eventDate' => '2020-04-26 07:07:10',
),
)
所以我想到了在该数组上使用
foreach
,为之前的事件创建一个新数组,并通过类似 $events[$foreachVar["date"] = "test"
之类的东西来构建它,以便至少获得该索引,但即使这样也没有帮助..
任何人都可以帮我解决这个问题,或者有更好的方法吗(更好的日历,更好地集成数据库?)
PS:如果介意的话,我使用 Fat Free Framework 作为一个小微框架。
您可以迭代数据库结果,获取
date
的 eventDate
部分作为输出数组键,并选择 description
和 link
元素作为输出:
$events = array();
foreach ($data as $event) {
$events[date('Y-m-d', strtotime($event['eventDate']))] = array(
'text' => $event['description'],
'href' => $event['link']
);
}
var_export($events);
输出(用于您的示例数据):
array (
'2020-04-07' =>
array (
'text' => 'that\'s a description',
'href' => 'example.com/link',
),
'2020-04-15' =>
array (
'text' => 'that\'s a description',
'href' => 'example.com/link',
),
'2020-04-16' =>
array (
'text' => 'that\'s a description',
'href' => 'example.com/link',
),
'2020-04-26' =>
array (
'text' => 'that\'s a description',
'href' => 'example.com/link',
),
)
注意我对日期有点偏执,希望允许数据库中的任何格式。如果它肯定是
yyyy-mm-dd HH:ii:ss
形式,您可以使用 substr($event['eventDate'], 0, 10)
来提取日期部分,即
foreach ($data as $event) {
$events[substr($event['eventDate'], 0, 10)] = array(
'text' => $event['description'],
'href' => $event['link']
);
}
试试这个
$events = [];
foreach($array as $key => $value){
$events[$value['date']] = $value;
}
打印 $events 你就会明白了。 问我是否需要更多帮助。