<p>PHP 스크립트를 실행하고 있는데 다음과 같은 오류가 계속해서 발생합니다. </p>
<인용문>
<p>주의 사항: 정의되지 않은 변수: 10행의 C:wampwwwmypathindex.php에 있는 my_variable_name</p>
<p>참고: 정의되지 않은 색인: my_index C:wampwwwmypathindex.php 11행</p>
<p>경고: 배열 키 'my_index'는 C:wampwwwmypathindex.php의 11행에 정의되어 있지 않습니다</p>
</인용문>
<p>10행과 11행은 다음과 같습니다.</p>
<pre class="brush:php;toolbar:false;">echo "내 변수 값은: " .
echo "내 인덱스 값은: " . $my_array["my_index"];</pre>
<p>이 오류 메시지는 무엇을 의미하나요? </p>
<p>갑자기 나타나는 이유는 무엇인가요? 나는 수년 동안 이 스크립트를 사용해 왔지만 아무런 문제도 없었습니다. </p>
<p>이 문제를 어떻게 해결하나요? </p>
<시간 />
<인용문>
<p><sub><strong>이 질문은 질문을 반복해서 설명하지 않고도 중복 질문에 연결할 수 있는 일반적인 참조 질문입니다.</strong> 이 질문에 대한 대부분의 실제 답변은 매우 구체적이기 때문에 이것이 필요하다고 생각합니다.
<p><sub>관련 메타 토론:</sub></p>
<li><sub>질문이 중복되면 어떻게 해야 하나요?
<li><sub>'참고 질문'이 의미가 있나요?
</ul>
</blockquote><p><br /></p>
이걸 사용해 보세요
으아아아또는 빠르고 지저분한 해결책:
으아아아세션에 대한 참고 사항:
세션을 사용할 때는 세션을 사용하는 모든 파일에
session_start();
를 넣어야 합니다.http://php.net/manual/en/features.sessions .php
이 오류 메시지는 존재하지 않는 변수(또는 배열 요소)에 액세스할 때 PHP 프로그래머가 오타나 오류를 찾는 데 도움 을 주기 위한 것입니다. 좋은 프로그래머라면:
알림/경고: 정의되지 않은 변수
PHP에서는 변수 선언이 필요하지 않지만 나중에 스크립트에서 사용되는 변수에 값을 할당하는 것을 잊어버리는 보안 허점이나 버그를 피하기 위해 권장합니다. 변수가 선언되지 않으면 PHP는
E_WARNING
수준 오류를 발생시킵니다.이 경고는 프로그래머가 철자가 틀린 변수 이름이나 유사한 유형의 오류(예: false로 평가되는 조건 내에서 변수에 값 할당)를 찾는 데 도움이 됩니다. 또한 초기화되지 않은 변수에는 다른 문제가 있을 수 있습니다. PHP 매뉴얼 에 명시된 대로
즉, 변수는 포함된 파일에서 값을 얻을 수 있으며 초기화되지 않은 변수에 액세스할 때 예상되는
null
값 대신 해당 값이 사용되어 예측할 수 없는 결과가 발생할 수 있습니다. 이를 방지하려면 사용하기 전에 PHP 파일의 모든 변수를 초기화하는 것이 가장 좋습니다.문제 해결 방법:
권장 사항: 각 변수를 사용하기 전에 선언하세요. 이렇게 하면 실제로 존재하지 않는 변수를 사용하려고 시도하는 실수를 한 경우에만 이 오류가 표시됩니다. 이것이 바로 이 오류 메시지가 존재하는 이유입니다.
으아악변수가 정의되었지만 함수에 표시되지 않는 특수한 경우입니다. PHP의 함수에는 자체적인 변수 범위가 있습니다. 함수에서 외부 변수를 사용해야 하는 경우 해당 값을 함수의 매개 변수로 전달해야 합니다.
으아악널 병합 연산자를 사용하여 오류를 억제합니다. 하지만 이렇게 하면 PHP가 잘못된 변수 이름을 사용했다는 사실을 사용자에게 알릴 수 없다는 점을 기억하세요.
으아악이전 PHP 버전( 으아악
특정 오류에 대해서만 적용되지만 여전히 본질적으로 오류 억제라는 점에 유의하세요. 따라서 균일한 변수를 표시하여 PHP가 도움을 주지 못하게 할 수 있습니다.
오류를 억제하려면 @operator를 사용하세요. 역사적인 이유로 이곳을 떠나지만, 진지하게 이런 일이 일어나서는 안 됩니다.
참고: 포인트 1만 구현하는 것이 좋습니다.
참고: 정의되지 않은 인덱스/정의되지 않은 오프셋/경고: 정의되지 않은 배열 키
이 알림/경고는 사용자(또는 PHP)가 정의되지 않은 배열 인덱스에 액세스하려고 할 때 발생합니다.
내부 어레이
코드에 정의된 내부 배열을 처리할 때 태도는 정확히 동일해야 합니다. 사용하기 전에 모든 키를 초기화하면 됩니다. 이런 식으로 버그는 의도된 작업을 수행합니다. 즉, 프로그래머에게 코드의 오류를 알립니다. 따라서 방법은 동일합니다.
권장 사항: 배열 요소 선언:
으아악특별한 경우는 일부 함수가 배열이나 다른 값을 반환하는 경우입니다(예:
와 같은 배열 요소에 액세스하기 전에 테스트를 수행해야 합니다. 으아악null
或false
). 그런 다음외부 어레이
외부 배열(예:
$_POST
/$_GET
/$_SESSION
또는 JSON 입력)의 경우 상황은 약간 다릅니다. 프로그래머가 해당 배열의 내용을 제어할 수 없기 때문입니다. 따라서 특정 키가 존재하는지 확인하거나 누락된 키에 기본값을 할당하는 것이 합리적입니다.PHP 스크립트에 HTML 양식이 포함되어 있으면 처음 로드될 때 양식 콘텐츠가 없는 것은 당연합니다. 따라서 이러한 스크립트는 양식이 제출되었는지 확인해야 합니다
으아악일부 HTML 양식 요소(예: 체크박스)는 선택 취소된 경우 서버로 전송되지 않습니다. 이 경우 null 병합 연산자를 사용하여 기본값을 할당하는 이유가 있습니다
으아악선택적 QUERY STRING 요소 또는 쿠키는 동일한 방식으로 처리되어야 합니다
으아악단, 과제는 대본 맨 처음부터 해야 해요. 모든 입력을 검증하고, 이를 로컬 변수에 할당하고 코드 전체에서 사용하세요. 따라서 액세스하는 모든 변수는 의도적으로 존재합니다.
관련: