2016-09-05 3 views
0

Дополнительные данные, показывающие:PHP: Еогеасп (дополнительные данные, показывающие)

http://image.prntscr.com/image/41c1fbbdc1354ed2801f5afcfc5b4e0d.png

Я имею странный вид данных из цикла Еогеасп. Мои дни и часы повторяются дважды. (См. Изображение прилагается). Но я не хочу отображать данные в последней строке. Может понравиться кому-то помочь с решениями. Благодаря

Мой код здесь: -

<button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample"> Timings </button> 
<div class="collapse" id="collapseExample"> 
<div class="well"> 
<?php 

     date_default_timezone_set('Australia/Melbourne'); 
     $datetime = new \DateTime(); 

     $listItem = array('<li class="active">', '</li>'); 

    $curDay = date('l'); 

     $status = array("Now Open" ,"Closed", "Opening Soon", "Closing Soon", "Open 24 hours", " "); 

     $times = $times = array(
     1 => array('day' => 'Monday', 'open' => date($row_DetailRS1['monO']), 'close' => date($row_DetailRS1['monC'])), 
     2 => array('day' => 'Tuesday', 'open' => date($row_DetailRS1['tueO']), 'close' => date($row_DetailRS1['tueC'])), 
     3 => array('day' => 'Wednesday', 'open' => date($row_DetailRS1['wedO']), 'close' => date($row_DetailRS1['wedC'])), 
     4 => array('day' => 'Thursday', 'open' => date($row_DetailRS1['thurO']), 'close' => date($row_DetailRS1['thurC'])), 
     5 => array('day' => 'Friday', 'open' => date($row_DetailRS1['friO']), 'close' => date($row_DetailRS1['friC'])), 
     6 => array('day' => 'Saturday', 'open' => date($row_DetailRS1['satO']), 'close' => date($row_DetailRS1['satC'])), 
     7 => array('day' => 'Sunday', 'open' => date($row_DetailRS1['sunO']), 'close' => date($row_DetailRS1['sunC']))); 



     $html .= " <a href=''>"; echo $curDay; $html .="</a> 

        <table class='table table-striped' border='0' align='center' cellpadding='10' cellspacing='20'> 
        <tr> 
        <td>Days</td> 
        <td><span class='white-text' style='margin-right: 3em;'></td> 
        <td>Business Hours</td> 
        <td><span class='white-text' style='margin-right: 3em;'></td> 
        <td>Hours</td> 
        </tr>"; 
     $i = 1; 



    $cd = $datetime->format('N'); 

    $timenow =  date("H:i:s", time()); 


    // Create an array of day numbers that start with current day and loops around 
    $day_order = array_merge(range($cd, 7), range(1, $cd-1)); 



    foreach ($day_order as $daynum): { 
     $oc = $times[$daynum]; 
     $openingTime = $oc['open']; 
     $closingTime = $oc['close']; 
     $openingSoon = date('H:i:sA', strtotime($openingTime)-3600); 
     $closingSoon = date('H:i:sA', strtotime($closingTime)-3600); 
     if ($cd == $daynum) { 
      if ($openingTime == ' ' && $closingTime == ' ') { 
       $s = $status[4]; 
      } 
      elseif ($timenow < $openingSoon || $timenow > $closingTime) { 
       $s = $status[1]; 
      } 
      elseif ($timenow > $openingSoon && $timenow < $openingTime) { 
       $s = $status[2]; 
      } 
      elseif ($timenow > $closingSoon && $timenow < $closingTime) { 
       $s = $status[3]; 
      } else { 
       $s = $status[0]; 
      } 
     } else { 
      $s = " "; 
     } 

     $html .= "<tr>"; 
     $html .= "<td>". $oc['day']."</td>"; 
     $html .= "<td> <span class='white-text' style='margin-right: 3em;'> </td>"; 
     $html .= "<td>".$openingTime." to ".$closingTime."</td>"; 
     $html .= "<td> <span class='white-text' style='margin-right: 3em;'> </td>"; 
     $html .= "<td>".$s."</td>"; 
     $html .= "</tr>"; 

    } 
      $datetime->add(new \DateInterval('P1D')); 








     endforeach; 
     $html .= "</table>"; 
     echo $html; 



    ?> 
+0

Где изображение? –

+0

Какая последняя строка вы имеете в виду? Можете ли вы указать? Сократите свой код до только необходимых элементов. – rbr94

+0

ссылка здесь http://i.stack.imgur.com/xAAZj.png Я не могу вставлять какое-либо изображение еще :( –

ответ

2
$day_order = array_merge(range($cd, 7), range(1, $cd-1)); 

Если вы var_dump это когда $cd == 1 вы получите

[1,2,3,4,5,6,7,1,0]; 

Вам нужно сделать:

$day_order = range($cd, 7); 
if ($cd != 1) { 
    $day_order = array_merge($day_order, range(1, $cd-1)); 
} 
+0

Спасибо Дэйв. Ваш код и код Робин работают. еще раз приятель –

1

I думаю, ошибки в этом линия, где можно определить диапазон Еогеасп:

$day_order = array_merge(range($cd, 7), range(1, $cd-1)); 

Оно должно быть:

if ($cd != 1) { 
    $day_order = array_merge(range($cd, 7), range(1, $cd-1)); 
} else { 
    $day_order = range($cd, 7)); 
} 

Причина в том, что, когда $cd == 1 то добавляет «0» в диапазоне чисел, потому что range(1,0) является «1 , 0" . Вы должны перехватить это добавление, проверив, $cd == 1.

+0

Спасибо, Робин. Ваш код и код Дейва оба работают. Спасибо за вашу помощь. Спасибо за вашу помощь. –

Смежные вопросы