2009-02-07 104 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')];