2016-02-27 63 views
0

我有這樣的代碼 - 我獲取用戶值,如果它在數組中,它將輸出該數組值,和之前的值。他們的方式我已經做得很好(im不確定是否有一個更簡單的方法!),唯一的問題是 - 如果該值已被索引在0,它不能-1,它會導致一個錯誤。我想要做的是如果用戶輸入星期一,那麼輸出將是 - 週日,週一,週二。

我該怎麼做,如果用戶DID進入星期一,會輸出最後一個值?

這裏是我的代碼 -

<?php 
     $user_input = $_POST ['user_input']; 
     $user_input_lower = strtolower($user_input); 

      $days= array(
      0 => 'Monday', 
      1 => 'Tuesday', 
      2 => 'Wednesday', 
      3 => 'Thursday', 
      4 => 'Friday', 
      5 => 'Saturday', 
      6 => 'Sunday' 
      ); 

      for ($i=0; $i < 7 ; $i++) { 

      if(isset($days[$i]) && $days[$i] == $user_input_lower) { 
      { 
       { 
       echo strtoupper($days[$i-1]) . "<br>"; 
       echo strtoupper($days[$i]) . "<br>"; 
       echo strtoupper($days[$i+1]) . "<br>"; 
       } 
      } 
     } 
     } 
     ?> 

謝謝!

回答

0

你可以添加一個if case。

if($i == 0) 
    echo "SUNDAY"; 
else 
    echo strtoupper($days[$i-1]); 
0

您可以在echo之前加上if

if($i>0){ 
    echo strtoupper($days[$i-1]) . "<br>"; 
} else { 
    echo "Monday"; 
} 
0

隨着日期和時間,使用專門爲此開發的PHP函數更容易,而不是重新發明輪子。下面是使用DateTime對象的一個​​簡單的例子:

$now = new \DateTime('monday'); 

$next = clone $now; 
$next->modify('+1 day'); 

$prev = clone $now; 
$prev->modify('-1 day'); 

print $prev->format('l'); // "Sunday" 
print $now->format('l'); // "Monday" 
print $next->format('l'); // "Tuesday" 

或者你的代碼可能看起來像:

$days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']; 
if (false !== $i = array_search('Monday', $days)) { 
    print $i > 0 ? $days[$i-1] : $days[6]; // "Sunday" 
    print $days[$i];      // "Monday" 
    print $i < 6 ? $days[$i+1] : $days[0]; // "Tuesday" 
} 

兩種解決方案都將與本週的「邊緣」的日子,也就是「星期一」和正常工作「星期日」。