2011-02-26 8 views
0

나는 배열 채우기를 시작하기 전까지 배열을 사용하는 방법을 알고 있다고 생각했다. 그래서 여기 상황이 있습니다 : 나는 나의 PHP 문서의 시작 부분에 배열을 선언하고 싶다. 그런 다음 문서 전체에 걸쳐 유효성 검사가 수행되며 오류가 발생할 경우 각 유효성 검사시 배열에 오류가 채워집니다. 그런 다음 문서 끝 부분에서이 오류를 페이지의 특정 오류에 반영합니다. 그래서 여기에 내가 지금 가지고있는 것입니다 :PHP 배열은 어떻게 작동합니까?

$errors = array();//declares array 

if(/*some qualifier*/) {//username validation 
} else { 
$errors[] = "<p>Please enter a valid username</p>"; 
} 

if(/*some qualifier*/) {//email validation 
} else { 
$errors[] = "<p>Please enter a valid email</p>"; 
} 

echo '<div id="errors">';//errors div 

foreach ($errors as $value) {//fills error div with the errors LINE 60 
    echo "$value<br />\n"; 
} 

echo '</div>'; 

그래서 ... 그게 뭐가 잘못 되었나요? 오류가 오류를 반향하려고 할 때 오류가 정의되지 않은 변수라는 오류가 계속 발생합니다.

코멘트에 주어진 오류 :

오류가 라인 (160)에 스크립트 '파일 경로'에서 발생 : 정의되지 않은 변수 :에서 뭔가 이상한와의 문제처럼 보인다 : 오류를 업데이트

내 코드. 당신이 여기에 코드의 217 라인을 통해보고 싶다면 모든 코드는 다음과 같습니다 : http://pastebin.com/YkERYpeF

+0

표시되는 코드 중 일부가 함수 내에있을 수 있습니까? 그러면 $ 오류가 올바른 범위의 문제가됩니다. – Zulan

+0

코드에 문제가 없습니다. 'if()'문장을'true' 또는'false'로 평가하여 저에게 완벽하게 실행됩니다. 뭔가를 남겨 두지 않았습니까? – ggutenberg

+0

어떤 오류가 있습니까? 오류를 제공해주십시오. – xzyfer

답변

2

귀하의 코드를 보았습니다. 조건 내에서 $ errors 만 선언했습니다.

//if the user has registered 
if (isset($_POST['submitted'])) { 

require_once (MYSQL); //gets the database connection 

$errors = array(); // declares the errors array that will be printed at end of validation if needed 

PHP 배열이 훌륭하게 작동합니다. 조건부 범위에서 변수를 선언하고 전역 범위에서 변수를 사용합니다. 그리고 PHP는 당신이 전역 변수에서 그 변수를 사용하기를 원한다고 상상할 수 없습니다.

코드를 들여 쓰기해야하지만 $errors$bodyId 바로 아래에 완벽하게 정의 할 수 있으며 PHP는 더 이상 불평하지 않습니다.

+0

감사합니다! 그래, 정말 들여 줘야한다, 그냥 그런 고통 : ( – chromedude

1

확률은 그 자체 목적을 위해 $ 오류를 사용하고 있습니다. 어딘가에 호출 된 일부 함수는 global $errors 또는 뭔가를 사용합니다. 그것을 다른 방식으로 돌리고 있습니다.

이런 종류의 일을 추적하는 가장 빠른 방법은 중간에 변수를 삽입하고 기본적으로 변수가 재설정되는 위치를 추적 할 때까지 코드에서 이진 검색을 수행하는 것입니다. .

관련 문제