我有这段代码我试图展示,但无论我怎么做,我都没有得到任何回应或错误。
<?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();
?>
任何人都可以看到我可能犯的任何明显错误并且没有注意到吗?
答案 0 :(得分:4)
您需要添加
global $day;
在你的功能的顶部。
查看variable scoping
上的PHP手册了解更多信息。除此之外,作为The.Anti.9 mentioned,您可以这样做:
$days = array("Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo");
function today() {
global $days;
echo $days[date("N")-1];
}
today();
答案 1 :(得分:2)
我没有看到错误,但你可以做到
echo $day[date('N')-1];
你需要记住数组索引从0开始而不是1.所以$ day [7]会给你索引错误,因为theres不是7。
编辑:
正如paoloa bergantino所指出的那样。您需要将$ day变量设置为全局变量,或者可以将其置于函数范围内。
答案 2 :(得分:2)
由于date('N')
会返回星期几(1 - 7),因此您还可以创建一个基于1的索引数组:
$day = array(1 => "Lunes","Martes","Miércoles","Jueves",
"Viernes","Sábado","Domingo");
echo $day[date('N')];
答案 3 :(得分:2)
避免使用全局变量(often-times a bad idea)。您可以将变量传递给函数。
因此将函数声明更改为
function today($day)
和最后一次调用
的函数today($day);
请注意,两个$ day不一样。
function today($day)
只是说这个函数中的每个$ day变量都包含作为this参数传入的值。您声明的数组不。因此,您可以将此更改为您想要的任何有效的php变量名称,以及函数范围内的所有$ days,结果将保持不变。
today($day)
表示您在之前声明的Array
$天内传入函数today
。