【问题标题】:PHP No response IssuePHP无响应问题
【发布时间】:2009-02-07 04:09:53
【问题描述】:

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

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

谁能看到我可能犯的任何明显的错误但没有注意到?

【问题讨论】:

    标签: php no-response


    【解决方案1】:

    你需要添加

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

    【讨论】:

    • 哦,是的,这很好,我什至没有注意到它超出了范围。
    【解决方案2】:

    避免使用全局变量(即often-times a bad idea)。您可以将变量传递给函数。

    因此将函数声明更改为

    function today($day) 
    

    最后一个函数调用

    today($day);
    

    请注意,这两个 $day 并不相同。

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

    today($day) 表示将您之前声明的Array $day 传入函数today

    【讨论】:

      【解决方案3】:

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

      $day = array(1 => "Lunes","Martes","Miércoles","Jueves",
                        "Viernes","Sábado","Domingo");
      echo $day[date('N')];
      

      【讨论】:

        【解决方案4】:

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

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

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

        编辑:

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

        【讨论】:

          猜你喜欢
          • 2021-10-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-23
          • 1970-01-01
          • 1970-01-01
          • 2016-05-28
          • 2021-02-09
          相关资源
          最近更新 更多