Add foreach loop to php daily system!

this is a php complete Japanese system

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; $iPP ){

                    //Create days in a week
                    for($j=1;$j<=7;$jPP){
                      $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->currentDayPP;
              }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){
                $numOfweeksPP;
              }
              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();

one of the paragraphs return is:

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>";

I want to put

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

join this return
but cannot join. There will be all kinds of problems
how can this be solved?


you can put foreach before return

for example, simply change foreach to an assignment operation:

foreach($driver_shift_get_all->{'driver-shifts'} as $value) {
    $driver_shift_list .= "<br>".$value->date."<br>";
    $driver_shift_list .= $value->{'drivers-available'};
}

the value after getting your foreach is related to the operation.

Menu