PHP의 "주의: 정의되지 않은 변수", "주의: 정의되지 않은 인덱스", "경고: 정의되지 않은 배열 키" 및 "주의: 정의되지 않은 오프셋"을 사용합니다.
P粉851401475
P粉851401475 2023-08-23 11:45:50
0
2
516
<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>
P粉851401475
P粉851401475

모든 응답(2)
P粉644981029

이걸 사용해 보세요

으아아아

또는 빠르고 지저분한 해결책:

으아아아

세션에 대한 참고 사항:

P粉787934476

이 오류 메시지는 존재하지 않는 변수(또는 배열 요소)에 액세스할 때 PHP 프로그래머가 오타나 오류를 찾는 데 도움 을 주기 위한 것입니다. 좋은 프로그래머라면:

  1. 사용 시 모든 변수 또는 배열 키가 정의되어 있는지 확인하세요. 함수 내에서 변수를 사용해야 하는 경우 변수를 함수에 매개변수로 전달해야 합니다.
  2. 이 오류를 인지하고 다른 오류와 마찬가지로 수정을 진행하세요. 오타가 있거나 일부 프로시저가 데이터를 반환하지 않는다는 의미일 수 있습니다.
  3. 드물게 상황이 프로그래머의 통제를 벗어나는 경우에만 이 오류를 방지하기 위해 코드를 추가해야 합니다. 그러나 이것은 결코 맹목적인 습관이 되어서는 안 됩니다.

알림/경고: 정의되지 않은 변수

PHP에서는 변수 선언이 필요하지 않지만 나중에 스크립트에서 사용되는 변수에 값을 할당하는 것을 잊어버리는 보안 허점이나 버그를 피하기 위해 권장합니다. 변수가 선언되지 않으면 PHP는 E_WARNING 수준 오류를 발생시킵니다.

이 경고는 프로그래머가 철자가 틀린 변수 이름이나 유사한 유형의 오류(예: false로 평가되는 조건 내에서 변수에 값 할당)를 찾는 데 도움이 됩니다. 또한 초기화되지 않은 변수에는 다른 문제가 있을 수 있습니다. PHP 매뉴얼 에 명시된 대로

즉, 변수는 포함된 파일에서 값을 얻을 수 있으며 초기화되지 않은 변수에 액세스할 때 예상되는 null 값 대신 해당 값이 사용되어 예측할 수 없는 결과가 발생할 수 있습니다. 이를 방지하려면 사용하기 전에 PHP 파일의 모든 변수를 초기화하는 것이 가장 좋습니다.

문제 해결 방법:

  1. 권장 사항: 각 변수를 사용하기 전에 선언하세요. 이렇게 하면 실제로 존재하지 않는 변수를 사용하려고 시도하는 실수를 한 경우에만 이 오류가 표시됩니다. 이것이 바로 이 오류 메시지가 존재하는 이유입니다.

    으아악
  • 변수가 정의되었지만 함수에 표시되지 않는 특수한 경우입니다. PHP의 함수에는 자체적인 변수 범위가 있습니다. 함수에서 외부 변수를 사용해야 하는 경우 해당 값을 함수의 매개 변수로 전달해야 합니다.

    으아악
  1. 널 병합 연산자를 사용하여 오류를 억제합니다. 하지만 이렇게 하면 PHP가 잘못된 변수 이름을 사용했다는 사실을 사용자에게 알릴 수 없다는 점을 기억하세요.

    으아악

    이전 PHP 버전( 으아악

    특정 오류에 대해서만 적용되지만 여전히 본질적으로 오류 억제라는 점에 유의하세요. 따라서 균일한 변수를 표시하여 PHP가 도움을 주지 못하게 할 수 있습니다.

  2. 오류를 억제하려면 @operator를 사용하세요. 역사적인 이유로 이곳을 떠나지만, 진지하게 이런 일이 일어나서는 안 됩니다.

참고: 포인트 1만 구현하는 것이 좋습니다.

참고: 정의되지 않은 인덱스/정의되지 않은 오프셋/경고: 정의되지 않은 배열 키

이 알림/경고는 사용자(또는 PHP)가 정의되지 않은 배열 인덱스에 액세스하려고 할 때 발생합니다.

내부 어레이

코드에 정의된 내부 배열을 처리할 때 태도는 정확히 동일해야 합니다. 사용하기 전에 모든 키를 초기화하면 됩니다. 이런 식으로 버그는 의도된 작업을 수행합니다. 즉, 프로그래머에게 코드의 오류를 알립니다. 따라서 방법은 동일합니다.

권장 사항: 배열 요소 선언:

으아악

특별한 경우는 일부 함수가 배열이나 다른 값을 반환하는 경우입니다(예: nullfalse). 그런 다음

와 같은 배열 요소에 액세스하기 전에 테스트를 수행해야 합니다. 으아악

외부 어레이

외부 배열(예: $_POST / $_GET / $_SESSION 또는 JSON 입력)의 경우 상황은 약간 다릅니다. 프로그래머가 해당 배열의 내용을 제어할 수 없기 때문입니다. 따라서 특정 키가 존재하는지 확인하거나 누락된 키에 기본값을 할당하는 것이 합리적입니다.

  • PHP 스크립트에 HTML 양식이 포함되어 있으면 처음 로드될 때 양식 콘텐츠가 없는 것은 당연합니다. 따라서 이러한 스크립트는 양식이 제출되었는지 확인해야 합니다

    으아악
  • 일부 HTML 양식 요소(예: 체크박스)는 선택 취소된 경우 서버로 전송되지 않습니다. 이 경우 null 병합 연산자를 사용하여 기본값을 할당하는 이유가 있습니다

    으아악
  • 선택적 QUERY STRING 요소 또는 쿠키는 동일한 방식으로 처리되어야 합니다

    으아악

단, 과제는 대본 맨 처음부터 해야 해요. 모든 입력을 검증하고, 이를 로컬 변수에 할당하고 코드 전체에서 사용하세요. 따라서 액세스하는 모든 변수는 의도적으로 존재합니다.

관련:

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿