PHP对于每个循环返回一个值

时间:2014-11-24 13:05:47

标签: php laravel foreach

我在这里有一个小小的困惑,我正在使用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 =&gt; $ a-&gt;仅限事件名称?

1 个答案:

答案 0 :(得分:1)

在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 :: generate。