2009-02-07 100 views
1

我有這段代碼我試圖展示,但不管我怎麼做,我只是沒有得到任何答覆或錯誤。PHP沒有響應問題

<?php 
$day = array("Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo"); 
//$month[]= array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"); 

function today(){ 
    $d = date("N"); 
    switch ($d){ 
     case 1: 
      echo $day[1]; 
      break; 
     case 2: 
      echo $day[2]; 
      break; 
     case 3: 
      echo $day[3]; 
      break; 
     case 4: 
      echo $day[4]; 
      break; 
     case 5: 
      echo $day[5]; 
      break; 
     case 6: 
      echo $day[6]; 
      break; 
     case 7: 
      echo $day[7]; 
      break; 
    } 
} 
today(); 
?> 

任何人都可以看到任何明顯的錯誤,我可能會做,並沒有注意到?

回答

2

避免使用全局變量(即often-times a bad idea)。您可以將該變量傳遞給該函數。

函數聲明因此改變

function today($day) 

最後函數調用

today($day); 

注意兩個$當天的是不一樣的。

function today($day)只是說這個函數中的每個$ day變量將包含作爲此參數傳入的值。你聲明的數組是而不是。因此,您可以將其更改爲所需的任何有效php變量名稱,以及函數範圍內的所有$天,並且結果將保持不變。

today($day)是說在您之前宣佈的Array $天之前通過函數today

2

嗯,我沒有看到一個錯誤,但你可以只是做

echo $day[date('N')-1]; 

你需要記住,數組下標0而不是1開始所以$天[7]會給你的索引錯誤,因爲那裏有沒有7.

編輯:

paoloa bergantino指出。您需要使$ day變量爲全局變量,或者您可以將其放在函數的範圍內。

4

您需要添加

global $day; 

在你的函數的頂部。

查看關於variable scoping的PHP手冊瞭解更多信息。除此之外,爲The.Anti.9 mentioned,你可能只是做:在一週的某一天(1 - 7)

$days = array("Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo"); 
function today() { 
    global $days; 
    echo $days[date("N")-1]; 
} 
today(); 
+0

哦,是的,這是一個很好的觀點,我甚至沒有注意到它已經超出了範圍。 – 2009-02-07 04:19:58

2

由於date('N')回報你,你還可以創建一個基於1的索引數組:

$day = array(1 => "Lunes","Martes","Miércoles","Jueves", 
        "Viernes","Sábado","Domingo"); 
echo $day[date('N')];