2013-07-20 3 views
1

alertError()를 실행하는 동안 문제가 발생했습니다. $ 오류에 대한 액세스가 있지만 showErrors()를 실행하는 동안 변수가 잘못 판단되었음을 알려줍니다. PHP에서 변수 범위 지정

$errors = array(); 

function alertError($error){ 
    $errors[] = $error; 
    echo $errors[count($errors)-1]; 
} 

function showErrors(){ 
     echo "<html> 
       <head> 
        <title>Error occurred!</title> 
       </head> 
       <body>"; 
       foreach($errors as $error){ 
        echo $error."<br>"; 
       } 
     echo " 
       </body> 
      </html>"; 
    die(); 
} 

왜 alertError()가 오류가 정의 $ 것을 모르는 것 같다 않습니다 "정의되지 않은 변수에 오류"및 showErrors는() 문제가 그를 액세스하는 데? mantioned으로

+0

[문서의 변수 범위] (http://php.net/language.variables.scope)를 읽으십시오. 그것은 모든 것을 설명합니다. – Gumbo

+2

이것은 이상한 방법으로 오류를 throw합니다. –

+0

PHP 범위는 상속하지 않습니다. 당신은 saner 프로그래밍 언어에 익숙하다면 지옥에 갈 수 있습니다. – Boann

답변

1

showErrors의 첫 번째 줄()

global $errors; 

이 유 전역의 $ 오류에 액세스 할 수 있습니다에서이 줄을 추가하면 업데이트

기능

위에서 언급 Mr. Alien과 Neil Neyman의 코멘트 - 그 침대 연습을 구입하십시오. 더 복잡한 시스템을위한 PHP 프로그램을 작성한다면 - OOP 개념을 이해해야합니다. n 그들의 링크와 코멘트.

행운을 비네! showErrors()

function showErrors($errors){ 
    ... 
} 

-

+2

Yuks no ... 글로벌 사용을 권장하지 않습니다 –

+0

왜 안되나요? 변수의 선언에없는 함수 내부 –

+1

[이유] (https://www.google.com/search?q=why+not+use+global&ie=utf-8&oe=utf-8&aq=t&rls=org) mozilla : ko-US : 공식 & 클라이언트 = firefox-a)? –

4

패스 오류가 당신처럼 코드가 필요 수도

$errors = alertError($error); 
showErrors($errors); 

function alertError($error){ 
    $errors[] = $error; 
    echo $errors[count($errors)-1]; 
    return $errors; 
} 

function showErrors($errors){ 
     echo "<html> 
       <head> 
        <title>Error occurred!</title> 
       </head> 
       <body>"; 
       foreach($errors as $error){ 
        echo $error."<br>"; 
       } 
     echo " 
       </body> 
      </html>"; 
    die(); 
} 
2

기능 'alertError은()'가 글로벌 변수 $ 오류에 대해 아무것도 모르는 실행합니다. 매번 새로운 변수 $ 오류가 발생합니다. 그래서 제대로 작동하지만 원하는대로 작동하지 않습니다. showErrors에서이 변수는 선언되지 않으므로 통지를받습니다. 각 기능에 전역 $ 오류 문을 사용할 수 있지만 좋지 않습니다.