PHP没有响应问题
问题描述:
我有这段代码我试图展示,但不管我怎么做,我只是没有得到任何答复或错误。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();
?>
任何人都可以看到任何明显的错误,我可能会做,并没有注意到?
答
避免使用全局变量(即often-times a bad idea)。您可以将该变量传递给该函数。
函数声明因此改变
function today($day)
最后函数调用
today($day);
注意两个$当天的是不一样的。
function today($day)
只是说这个函数中的每个$ day变量将包含作为此参数传入的值。你声明的数组是而不是。因此,您可以将其更改为所需的任何有效php变量名称,以及函数范围内的所有$天,并且结果将保持不变。
today($day)
是说在您之前宣布的Array
$天之前通过函数today
。
答
嗯,我没有看到一个错误,但你可以只是做
echo $day[date('N')-1];
你需要记住,数组下标0而不是1开始所以$天[7]会给你的索引错误,因为那里有没有7.
编辑:
为paoloa bergantino指出。您需要使$ day变量为全局变量,或者您可以将其放在函数的范围内。
答
您需要添加
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();
答
由于date('N')
回报你,你还可以创建一个基于1的索引数组:
$day = array(1 => "Lunes","Martes","Miércoles","Jueves",
"Viernes","Sábado","Domingo");
echo $day[date('N')];
哦,是的,这是一个很好的观点,我甚至没有注意到它已经超出了范围。 – 2009-02-07 04:19:58