我在这里遇到了一个小困惑,我正在使用 crinsane 的 laravel 插件创建一个日历,唯一的问题是使用 foreach 循环显示从数据库传递的值中的多个日期。基本结构是这样的
$data = array(
3 => 'http://example.com/news/article/2006/03/',
7 => 'http://example.com/news/article/2006/07/',
);
Calendar::generate(2006, 6, $data);
这将呈现压光机。但是我的数据值来自数据库。这是我的 foreach 循环
@foreach ($events as $a)
<?php $string = $a->datebooked;
$date = DateTime::createFromFormat("Y-m-d" ,$string);
$date=$date->format("d");
$date;?>
<?php $data=array(
$date=> $a->eventname,
)?>
@endforeach
<?php echo Calendar::generate(date('Y'), date('n'), $data); ?>
当我运行此代码时,它只显示最后一个事件日期,我知道这是因为它循环遍历整个数据变量,但是我怎样才能让它循环通过 $date=> $a->eventname 仅?
在 for-each 循环之外,您不想覆盖$data,而是添加它。执行此操作的快速而肮脏的方法是在foreach循环之外定义一个$data数组,然后像这样附加到数组中
<?php
$data = array();
?>
@foreach ($events as $a)
<?php
$string = $a->datebooked;
$date = DateTime::createFromFormat("Y-m-d", $string);
$date = $date->format("d");
$data[] = array($date => $a->eventname);
?>
@endforeach
不过,这不是将PHP混合到视图中的好方法;作为建议,我将创建$data的逻辑放入控制器中,并且仅在视图中调用Calendar::generation。