Fiyatlarla tarihleri ​​tablosu Rendering

1 Cevap php

En (her zaman tutarlı ve aşağtya olan) bir dizi şeklinde geliş tarihi 12/28/10 ve 1/5/11 bir ayrılış tarihini verildi demek gibi yapalım:

$data = array(
0 => array(
'Date' => '12/28/10',
'Price' => 100
),
1 => array(
'Date' => '12/29/10',
'Price' => 100
),
2 => array(
'Date' => '12/30/10',
'Price' => 100
),
3 => array(
'Date' => '12/31/10',
'Price' => 100
),
4 => array(
'Date' => '1/1/11',
'Price' => 100
),
5 => array(
'Date' => '1/2/11',
'Price' => 100
),
6 => array(
'Date' => '1/3/11',
'Price' => 100
),
7 => array(
'Date' => '1/4/11',
'Price' => 100
)
);

Nasıl bir tablo ilk tablo hücre Cumartesi Pazar ve son tablo hücresinde başlayan, yukarı oranlarının iki hafta özetleyen oluşturmak olabilir?

Çıkış gibi bir şey olması gerekir:

<table>
<tr>
        <thead>
                                                            <tr>
                                                            <th>Sun</th>
                                                            <th>Mon</th>
                                                            <th>Tue</th>

                                                            <th>Wed</th>
                                                            <th>Thu</th>
                                                            <th>Fri</th>
                                                            <th>Sat</th>
                                                            </tr>
                                                        </thead>
<tbody>
<tr>
<td>12/26</td>
<td>12/27</td>
<td>12/28</td>
<td>12/29</td>
<td>12/30</td>
<td>12/31</td>
<td>1/1</td>
</tr>
<tr>
<td>$100</td>
<td>$100</td>
<td>$100</td>
<td>$100</td>
<td>$100</td>
<td>$100</td>
<td>$100</td>
</tr>
<tr>
<td>1/2</td>
<td>1/3</td>
<td>1/4</td>
<td>1/5</td>
<td>1/6</td>
<td>1/7</td>
<td>1/8</td>
</tr>
<tr>
<td>$100</td>
<td>$100</td>
<td>$100</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>

Ben bugüne kadar ne yaptım, bir:

$firstDay = strtotime( $data[0]['Date'] );
$firstSunday = strtotime('last sunday', $firstDay);
$lastDay = strtotime( $data[count($data)-1]);
$lastSaturday = strtotime('saturday', $lastDay);

$nights = (( $lastSaturday - $firstSunday ) / 86400) + 1;
$numWeeks = $nights / 7;

for ( $i=0; $i< $numWeeks; $i++) {
}

Ne yapıyorum doğru olup olmadığından emin değilim ancak ben bu döngü içinde ben istiyorum güne bir başvuru almak gibi olamaz, çünkü .. O hafta döngü edilir.

Daha önce, ben bütün gün boyunca döngü güveniyor böylece aa / gg satır oluşturmak gerek yoktu, ama şimdi haftada iki satır gerekir çünkü daha karmaşık kazanılmış.

1 Cevap

Bu deneyin, çalışıyor ...

        <?php
        $firstDay = strtotime( $data[0]['Date'] );
        $firstSunday = strtotime('last sunday', $firstDay);
        $diff = (( $firstDay - $firstSunday ) / 86400);
        $diff2 = 7 - (($diff+count($data))%7);


          for($i=0;$i<$diff;$i++){   
            //Adding missing elements in front of the array
            array_unshift($data, array('Date'=> date("m/d/Y",strtotime('-1 day',strtotime($data[0]['Date']))), 'Price'=>'0'));    
          }
          for($i=0;$i<$diff2;$i++){    
            //Adding missing elements in end of the array
            array_push($data, array('Date'=> date("m/d/Y",strtotime('+1 day',strtotime($data[count($data)-1]['Date']))), 'Price'=>'0'));    
          }

        //table header
        //cicle until the length of $data (num of days) array will reach
        //$i increment by 7 every cicle to simulate the week 
        //by this you don't need successive counts to retrive corret Date and price from array 
        for($i=0;$i<count($data);$i=$i+7){
            //Every week the $days and price are reset to null
            $days="";
            $price="";
            //cicle the 7 days in a week
            for($j=0;$j<7;$j++){
                //add the columns Date ($i+$j) is used to retrive the correct array pos 
                //$j is the day in the "current" week
                //$i is the "past week" days 
                $days.="<td>".$data[$i+$j]['Date']."</td>";
                $price.="<td>".$data[$i+$j]['Price']."</td>";
              }
              //week finished add 2 rows and the respective cols
           echo "<tr>".$days."</tr><tr>".$price."</tr>";
        }
        //table Footer
?>