账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    php 日曆系統中添加foreach迴圈!
    40
    0

    這是一個php完整的日曆系統

    class Calendar {
                public function __construct(){
                  $this->naviHref = htmlentities($_SERVER['PHP_SELF']);
                }
                /********************* PROPERTY ********************/
                private $dayLabels = array("一","二","三","四","五","六","日");
                private $currentYear=0;
                private $currentMonth=0;
                private $currentDay=0;
                private $currentDate=null;
                private $daysInMonth=0;
                private $naviHref= null;
                /********************* PUBLIC **********************/
                public function show() {
                  @$year  == null;
                  @$month == null;
                  if(null==@$year&&isset($_GET['year'])){
                    @$year = $_GET['year'];
                  }else if(null==@$year){
                    @$year = date("Y",time());
                  }
                  if(null==@$month&&isset($_GET['month'])){
                    $month = $_GET['month'];
                  }else if(null==@$month){
                    $month = date("m",time());
                  }
                  $this->currentYear=$year;
                  $this->currentMonth=$month;
                  $this->daysInMonth=$this->_daysInMonth($month,$year);
                  $content='<div id="calendar">'.
                    '<div class="box">'.
                    $this->_createNavi().
                    '</div>'.
                    '<div class="box-content">'.
                      '<ul class="label">'.$this->_createLabels().'</ul>';
                      $content.='<div class="clear"></div>';
                      $content.='<ul class="dates">';
    
                      $weeksInMonth = $this->_weeksInMonth($month,$year);
                      // Create weeks in a month
                      for( $i=0; $i<$weeksInMonth; $i++ ){
    
                        //Create days in a week
                        for($j=1;$j<=7;$j++){
                          $content.=$this->_showDay($i*7+$j);
                        }
                      }
                      $content.='</ul>';
                      $content.='<div class="clear"></div>';
                    $content.='</div>';
                  $content.='</div>';
                  return $content;
                }
    
                /********************* PRIVATE **********************/
    
                private function _showDay($cellNumber){
                  if($this->currentDay==0){
                    $firstDayOfTheWeek = date('N',strtotime($this->currentYear.'-'.$this->currentMonth.'-01'));
                    if(intval($cellNumber) == intval($firstDayOfTheWeek)){
                      $this->currentDay=1;
                    }
                  }
    
                  if(($this->currentDay!=0)&&($this->currentDay<=$this->daysInMonth)){
                      $this->currentDate = date('Y-m-d',strtotime($this->currentYear.'-'.$this->currentMonth.'-'.($this->currentDay)));
                      $cellContent = $this->currentDay;
                      $this->currentDay++;
                  }else{
                      $this->currentDate =null;
                      $cellContent=null;
                  }
    
                  return '
                  <li id="li-'.$this->currentDate.'" class="'.($this->currentDate==date("Y-m-d")?'today':'').' relative '.($cellNumber%7==1?' start ':($cellNumber%7==0?' end ':' ')).
                    ($cellContent==null?'mask':'').'">'.($cellContent==null?'':'
                    <span class="cellContent">'.$cellContent.'</span>
    
                    <div class="avatar_review_layout">
                      <span data-today="'.$cellContent.'" data-date="'.$this->currentDate.'"
                      class="pointer relative addicon add_'.$this->currentDate.'"><span class="plus">+</span></span>
                    </div>
                  ').'</li>';
                }
    
                private function _createNavi(){
                  $nextMonth = $this->currentMonth==12?1:intval($this->currentMonth)+1;
                  $nextYear = $this->currentMonth==12?intval($this->currentYear)+1:$this->currentYear;
                  $preMonth = $this->currentMonth==1?12:intval($this->currentMonth)-1;
                  $preYear = $this->currentMonth==1?intval($this->currentYear)-1:$this->currentYear;
    
                  return
                    '<div class="header">'.
                      '<a class="prev" href="'.$this->naviHref.'?month='.sprintf('%02d',$preMonth).'&year='.$preYear.'">← '.$preMonth.' 月</a>'.
                          '<span class="title">'.date('Y 年 n 月',strtotime($this->currentYear.'-'.$this->currentMonth.'-1')).'</span>'.
                      '<a class="next" href="'.$this->naviHref.'?month='.sprintf("%02d", $nextMonth).'&year='.$nextYear.'">'.$nextMonth.' 月 →</a>'.
                    '</div>';
                }
    
                private function _createLabels(){
                  $content='';
                  foreach($this->dayLabels as $index=>$label){
                    $content.='<li class="'.($label==6?'end title':'start title').' title">'.$label.'</li>';
                  }
                  return $content;
                }
    
                private function _weeksInMonth($month=null,$year=null){
                  if( null==($year) ) {
                    $year =  date("Y",time());
                  }
                  if(null==($month)) {
                    $month = date("m",time());
                  }
                  // find number of days in this month
                  $daysInMonths = $this->_daysInMonth($month,$year);
                  $numOfweeks = ($daysInMonths%7==0?0:1) + intval($daysInMonths/7);
                  $monthEndingDay= date('N',strtotime($year.'-'.$month.'-'.$daysInMonths));
                  $monthStartDay = date('N',strtotime($year.'-'.$month.'-01'));
                  if($monthEndingDay<$monthStartDay){
                    $numOfweeks++;
                  }
                  return $numOfweeks;
                }
    
                private function _daysInMonth($month=null,$year=null){
                  if(null==($year))
                    $year =  date("Y",time());
                  if(null==($month))
                    $month = date("m",time());
                  return date('t',strtotime($year.'-'.$month.'-01'));
                }
            }
    
            $calendar = new Calendar();
            echo $calendar->show();

    其中有一段return是:

    return '
                  <li id="li-'.$this->currentDate.'" class="'.($this->currentDate==date("Y-m-d")?'today':'').' relative '.($cellNumber%7==1?' start ':($cellNumber%7==0?' end ':' ')).
                    ($cellContent==null?'mask':'').'">'.($cellContent==null?'':'
                    <span class="cellContent">'.$cellContent.'</span>
    
                    <div class="avatar_review_layout">
                      <span data-today="'.$cellContent.'" data-date="'.$this->currentDate.'"
                      class="pointer relative addicon add_'.$this->currentDate.'"><span class="plus">+</span></span>
                      // 讓迴圈能夠在這裡運作
                    </div>
                  ').'</li>';

    我想將

    foreach($driver_shift_get_all->{'driver-shifts'} as $value):
      echo "<br>".$value->date."<br>";
      print_r($value->{'drivers-available'});
    endforeach;

    加入到這個return
    但無法加入.....會有各種問題
    請問這能怎麼解?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 前世情未了 VIP会员 1楼

      在PHP中,我们可以使用DateTime对象来创建日期和时间。然后,我们可以使用foreach循环来遍历这些日期和时间。

      以下是一个简单的例子,它创建了一个新的日历实例,并添加了一些日期和时间:

      ```php

      new DateTime('2022-01-01'), '2022-01-02' => new DateTime('2022-01-02'), '2022-01-03' => new DateTime('2022-01-03'), '2022-01-04' => new DateTime('2022-01-04'), ]; foreach ($events as $event) { echo $event->format('Y-m-d H:i:s') . "\n"; } ?>

      ```

      在这个例子中,我们首先定义了一个包含日期和时间的数组。然后,我们使用foreach循环遍历这个数组。对于每次迭代,我们都使用DateTime对象来创建一个新的日期和时间,并将其格式化为字符串。最后,我们打印出每个日期和时间的字符串表示。

      注意,日期和时间的格式可能会根据你的PHP环境和日期和时间的设置有所不同。如果你的日期和时间的格式不正确,你可能需要调整DateTime对象的构造函数以使其符合你的需求。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部