PHP没有回复问题

时间:2009-02-07 04:09:53

标签: php no-response

我有这段代码我试图展示,但无论我怎么做,我都没有得到任何回应或错误。

<?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();
?>

任何人都可以看到我可能犯的任何明显错误并且没有注意到吗?

4 个答案:

答案 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