1

我有这段代码要显示,但无论我怎么做,我都没有得到任何响应或错误。

<?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

4 回答 4

4

您需要添加

global $day;

在你的函数的顶部。

查看 PHP 手册variable scoping了解更多信息。除此之外,正如The.Anti.9 提到的,你可以这样做:

$days = array("Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo");
function today() {
    global $days;
    echo $days[date("N")-1];
}
today();
于 2009-02-07T04:16:30.697 回答
2

好吧,我看不出有什么错误,但你可以这样做

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

你需要记住数组索引从 0 开始而不是 1。所以 $day[7] 会给你索引错误,因为没有 7。

编辑:

正如paoloa bergantino指出的那样。您需要将 $day 变量设为全局变量,或者您可以将它放在函数的范围内。

于 2009-02-07T04:14:40.343 回答
2

由于date('N')返回星期几(1 - 7),您还可以创建一个基于 1 的索引数组:

$day = array(1 => "Lunes","Martes","Miércoles","Jueves",
                  "Viernes","Sábado","Domingo");
echo $day[date('N')];
于 2009-02-07T04:22:22.013 回答
2

避免使用全局变量(这通常是个坏主意)。您可以将变量传递给函数。

因此将函数声明更改为

function today($day) 

和最后一个函数调用

today($day);

请注意,这两个 $day 是不一样的。

function today($day)只是说此函数中的每个 $day 变量都将包含作为此参数传入的值。它不是您声明的数组。因此,您可以将其更改为您想要的任何有效的 php 变量名称,以及函数范围内的所有 $days,结果将保持不变。

today($day)就是说将您之前声明的 $day 传递给Arrayfunction today

于 2009-02-07T04:33:58.430 回答