2012-08-11 65 views
1

是否有理由或方法來避免這種情況下的語句,在這種情況下,我需要根據一週中的哪一天顯示內容?在平日顯示內容時避免if語句(PHP)

$d=date("w"); 
if ($d=="0") echo "Sunday"; 
if ($d=="1") echo "Monday"; 
if ($d=="2") echo "Tueday"; 
if ($d=="3") echo "Wednesday"; 
if ($d=="4") echo "Thursday"; 
if ($d=="5") echo "Friday"; 
if ($d=="6") echo "Saturday"; 
+0

可能是......'echo date('l');'? – 2012-08-11 19:15:38

+0

我還需要顯示不同的內容,無論是早上,中午還是晚上。所以星期一上午,星期一晚上,星期二上午,星期二晚上等不同的內容。 – user1548619 2012-08-11 19:16:36

+0

這是一個非常簡單的方法,不能用不同的語言或時區移植。例如在歐洲,一週的第一天就是星期一。我建議你使用一個合適的庫,看看這個[問題](http://stackoverflow.com/questions/712761/how-to-find-day-of-week-in-php) – 2012-08-11 19:20:01

回答

1
$dates = array("Sunday", 
       "Monday", 
       "Tuesday", 
       "Wednesday", 
       "Thursday", 
       "Friday", 
       "Saturday" 
      ); 

echo $dates[date("w")]; 

這應該很好。

編輯:來想一想,只是使用echo date("l")應該適用於您的目的。

+0

謝謝!這是我正在尋找的。我需要顯示的文字是特別的,不只是一天的名字:-) – user1548619 2012-08-11 19:28:01

+0

不是問題!如果您喜歡我的回答,請隨時點擊左側的綠色複選標記。您也可以向我詢問您可能遇到的任何後續問題。 :) – 2012-08-11 19:31:39

1

這樣做有多種方式:


1.你可以只使用 date l(小寫 大號):

echo date('l'); 


2.你可以使用一個 array

$days = array(
    "Sunday", 
    "Monday", 
    "Tuesday", 
    "Wednesday", 
    "Thursday", 
    "Friday", 
    "Saturday"); 

,然後用訪問:

echo $days[$d]; 


3.可以使用一個 switch:但是

switch ($d) 
{ 
    case 0: 
     echo "Sunday"; 
    ... 
} 

,我傾向於避免switch陳述,因爲它們是最難的人類大腦理解。


一些提示:

  1. 你拼錯週二
  2. 使用else if而不是多個if秒。
1

使用的數組:

$days_of_week = array(
    "Sunday", 
    "Monday", 
    "Tuesday", 
    "Wednesday", 
    "Thursday", 
    "Friday", 
    "Saturday"); 

echo $days_of_week[$d] 
1
echo date ('l'); 

作爲每PHP manpage

(小寫 'L'):一週中的一天中的完整的文本格式

0

你總是可以看看switch statement,如:

$d=date('w'); 
switch($d) { 
    case(0): 
     $day='Sunday'; 
     break; 
    case(1): 
     $day='Monday'; 
     break; 
    case(2): 
     $day='Tuesday'; 
     break; 
    case(3): 
     $day='Wednesday'; 
     break; 
    case(4): 
     $day='Thursday'; 
     break; 
    case(5): 
     $day='Friday'; 
     break; 
    case(6): 
     $day='Saturday'; 
     break; 
    default: 
     $day=null; 
} 
if($day!==null) {echo($day);} 
+0

爲什麼不直接在交換機中回顯? – 2012-08-11 19:19:59

+0

因爲該代碼至少應該在函數中使用,而不是直接在視圖中使用,並且該函數不應該回顯,而是返回名稱。這樣,當您只需要前幾個字母時,也可以使用相同的功能。 – Arjan 2012-08-11 21:16:53