PHP Нет ответа - PullRequest
       35

PHP Нет ответа

1 голос
/ 07 февраля 2009

У меня есть этот фрагмент кода, который я пытаюсь отобразить, но независимо от того, как я это делаю, я просто не получаю никакого ответа или ошибки.

<?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 голосов
/ 07 февраля 2009

Вам нужно добавить

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();
2 голосов
/ 07 февраля 2009

Чтобы избежать использования глобальных переменных (что часто является плохой идеей ). Вы можете просто передать переменную в функцию.

Таким образом, измените объявление функции на

function today($day) 

и последний вызов функции

today($day);

Обратите внимание, что два $ дня не совпадают.

function today($day) просто говорит, что каждая переменная $ day в этой функции будет содержать значение, переданное в качестве этого аргумента. Это , а не массив, который вы объявили. Поэтому вы можете изменить это имя на любое допустимое имя переменной php, а также все $ days в области действия функции, и результат останется прежним.

today($day) говорит о переходе в Array $ день, который вы объявили ранее в функцию today.

2 голосов
/ 07 февраля 2009

Так как date('N') возвращает вам день недели (1 - 7), вы можете также создать индексный массив на основе 1:

$day = array(1 => "Lunes","Martes","Miércoles","Jueves",
                  "Viernes","Sábado","Domingo");
echo $day[date('N')];
2 голосов
/ 07 февраля 2009

Ну, я не вижу ошибки, но вы могли бы просто сделать

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

Вы должны помнить, что индексы массива начинаются с 0, а не с 1. Таким образом, $ day [7] выдаст вам ошибку индекса, потому что нет 7.

EDIT:

как paoloa bergantino указал. Вам нужно сделать переменную $ day глобальной, или вы можете поместить ее в область действия функции.

...