2009-02-07 3 views
1

나는이 코드를 표시하려고하는데 어떤 방식 으로든 응답이나 오류가 전혀 발생하지 않습니다.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(); 
?> 

분명히 내가 범한 실수를 볼 수 있습니까?

답변

2

글로벌 변수 (often-times a bad idea) 사용을 피하십시오. 함수에 변수를 전달하면됩니다.

따라서

today($day); 

참고

function today($day) 

마지막 함수 호출 함수 선언을 변경하는 $ 하루가 동일하지 두.

function today($day)은 단순히이 함수 내의 모든 $ day 변수에이 인수로 전달되는 값이 포함된다고 말하고 있습니다. 아니요, 당신이 신고 한 배열입니다. 따라서 함수 범위 내의 모든 $ 일과 함께 유효한 PHP 변수 이름으로 변경할 수 있으며 결과는 동일하게 유지됩니다.

today($day)은 이전에 today으로 선언 한 $ Array $ 일을 전달합니다.

2

것은 그럼 당신은 그래서 $ 일 [7] 당신 때문에 인덱스 오류를 줄 것이다 배열 인덱스는 0이 아닌 1부터 시작하는 기억해야 내가 실수를 볼 수 없습니다,하지만 당신은 단지

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

을 할 수 paoloa bergantino

지적 : 더 7.

편집은 프로그래머입니다. $ day 변수를 전역 변수로 만들거나 함수의 범위 안에 넣을 수 있습니다.

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

오, 그래, 좋은 지적이다. 나는 그것이 범위를 벗어난 것을 알아 차리지 못했다. –

2

date('N') 이후 반환 당신에게 요일 (1-7) 당신은 또한 1 인덱스 배열을 만들 수 있습니다

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