PHP Нет ответа
У меня есть этот фрагмент кода, который я пытаюсь отобразить, но независимо от того, как я это делаю, я просто не получаю никакого ответа или ошибки вообще.
<?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 ответа
Избегать использования глобальных переменных (что часто является плохой идеей). Вы можете просто передать переменную в функцию.
Таким образом измените объявление функции на
function today($day)
и последний вызов функции
today($day);
Обратите внимание, что два $ дня не совпадают.
function today($day)
просто говорит, что каждая переменная $day в этой функции будет содержать значение, переданное в качестве этого аргумента. Это не тот массив, который вы объявили. Поэтому вы можете изменить это имя на любое допустимое имя переменной php, а также все $days в области действия функции, и результат останется прежним.
today($day)
говорит пройти в Array
$ день, который вы объявили ранее в функцию today
,
Вам нужно добавить
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();
Ну, я не вижу ошибки, но вы могли бы просто сделать
echo $day[date('N')-1];
вы должны помнить, что индексы массива начинаются с 0, а не с 1. Таким образом, $day[7] выдаст вам ошибку индекса, потому что нет 7.
РЕДАКТИРОВАТЬ:
как указал Paolo Bergantino. Вам нужно сделать переменную $ day глобальной или вы можете поместить ее в область действия функции.
Поскольку date('N')
возвращает вам день недели (1 - 7), который вы могли бы также создать индексный массив на основе 1:
$day = array(1 => "Lunes","Martes","Miércoles","Jueves",
"Viernes","Sábado","Domingo");
echo $day[date('N')];