php - 에러 - undefined variable mode




PHP를 사용하여 "주의:정의되지 않은 변수", "주의:정의되지 않은 색인"및 "통지:정의되지 않은 오프셋" (18)

Notice : 정의되지 않은 변수

PHP 매뉴얼 의 광대 한 지혜에서 :

초기화되지 않은 변수의 기본값에 의존하는 것은 한 파일을 동일한 변수 이름을 사용하는 다른 파일에 포함시키는 경우 문제가됩니다. 또한 register_globals 가 켜져있는 주요 보안 위험 요소 입니다. E_NOTICE 레벨 오류는 초기화되지 않은 변수로 작업하는 경우에 발생하지만, 초기화되지 않은 배열에 요소를 추가하는 경우에는 발생하지 않습니다. isset() 언어 구문은 변수가 이미 초기화되었는지 감지하는 데 사용할 수 있습니다. 또한 변수가 초기화되지 않은 경우 경고 또는 오류 메시지를 생성하지 않으므로 empty() 솔루션이 더 이상적입니다.

empty() :

변수가 존재하지 않으면 경고가 생성되지 않습니다. 즉, empty () 는 본질적으로 간결한 것과 같습니다 ! isset ($ var) || $ var == false .

즉, 변수가 설정되었는지 여부를 결정하기 위해 empty() 만 사용할 수 있고 변수 0,"",null 과 비교하여 변수를 검사 할 수 있습니다.

예:

$o = [];
@$var = ["",0,null,1,2,3,$foo,$o['myIndex']];
array_walk($var, function($v) {
    echo (!isset($v) || $v == false) ? 'true ' : 'false';
    echo ' ' . (empty($v) ? 'true' : 'false');
    echo "\n";
});

위의 스 니펫을 3v4l.org 온라인 PHP 편집기 에서 테스트하십시오.

PHP는 변수 선언을 요구하지 않지만 나중에 스크립트에서 사용될 변수에 값을 제공하는 것을 잊어 버리는 보안 취약점이나 버그를 피하기 위해이를 권장합니다. 선언되지 않은 변수의 경우 PHP는 매우 낮은 수준의 오류 E_NOTICE 발행합니다. 기본값은 E_NOTICE 입니다.이 오류는 기본적으로보고되지 않지만 설명서는 개발 중에 허용 할 것을 권고합니다 .

문제를 다루는 방법 :

  1. 권장 사항 : 예를 들어 정의되지 않은 변수에 문자열을 추가하려고 할 때와 같이 변수를 선언하십시오. 또는 isset() / empty() 를 사용하여 다음과 같이 참조하기 전에 선언되었는지 확인하십시오.

    //Initializing variable
    $value = ""; //Initialization value; Examples
                 //"" When you want to append stuff later
                 //0  When you want to add numbers later
    //isset()
    $value = isset($_POST['value']) ? $_POST['value'] : '';
    //empty()
    $value = !empty($_POST['value']) ? $_POST['value'] : '';
    

    이것은 PHP 7.0에서 훨씬 더 깔끔하게되었습니다. 이제 null coalesce 연산자를 사용할 수 있습니다 :

    // Null coalesce operator - No need to explicitly initialize the variable.
    $value = $_POST['value'] ?? '';
    
  2. E_NOTICE에 대한 사용자 정의 오류 처리기 를 설정하고 메시지를 표준 출력 (어쩌면 로그 파일)에서 리디렉션하십시오.

    set_error_handler('myHandlerForMinorErrors', E_NOTICE | E_STRICT)
    
  3. E_NOTICE를보고하지 않습니다. E_NOTICE 만 제외하는 빠른 방법은 다음과 같습니다.

    error_reporting( error_reporting() & ~E_NOTICE )
    
  4. @ 연산자로 오류를 표시하지 않습니다.

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

Notice : 정의되지 않은 인덱스 / 정의되지 않은 오프셋

이 알림은 사용자 (또는 PHP)가 배열의 정의되지 않은 색인에 액세스하려고 할 때 나타납니다.

문제를 다루는 방법 :

  1. 색인에 액세스하기 전에 색인이 존재하는지 확인하십시오. 이를 위해 isset() 또는 array_key_exists() 사용할 수 있습니다.

    //isset()
    $value = isset($array['my_index']) ? $array['my_index'] : '';
    //array_key_exists()
    $value = array_key_exists('my_index', $array) ? $array['my_index'] : '';
    
  2. 언어 구조 list() 은 존재하지 않는 배열 색인에 액세스하려고 시도 할 때이를 생성 할 수 있습니다.

    list($a, $b) = array(0 => 'a');
    //or
    list($one, $two) = explode(',', 'test string');
    

두 개의 변수가 두 개의 배열 요소를 액세스하는 데 사용되지만 하나의 배열 요소 인 인덱스 0 만 있으므로 생성됩니다.

Notice : 정의되지 않은 오프셋 : 1

$_POST / $_GET / $_SESSION 변수

위의주의 사항은 $_POST , $_GET 또는 $_SESSION 작업 할 때 자주 나타납니다. $_POST$_GET 경우 인덱스를 사용하기 전에 인덱스가 있는지 여부 만 확인하면됩니다. $_SESSION 경우 session_start() 세션을 시작했는지 확인하고 인덱스도 존재하는지 확인해야합니다.

또한 세 변수는 모두 superglobals 이며 대문자입니다.

관련 항목 :

PHP 스크립트를 실행 중이며 다음과 같은 오류가 계속 발생합니다.

공지 : 정의되지 않은 변수 : my_variable_name in C : \ Wamp \ www \ mypath \ index.php 10 행

공지 : 정의되지 않은 색인 : my_index C : \ wamp \ www \ mypath \ index.php 11 행

10 행과 11 행은 다음과 같습니다.

echo "My variable value is: " . $my_variable_name;
echo "My index value is: " . $my_array["my_index"];

이 오류 메시지의 의미는 무엇입니까?

왜 그들은 갑자기 나타 납니까? 나는이 스크립트를 수년 동안 사용해 왔지만 결코 문제가 없었습니다.

어떻게 수정합니까?

이것은 반복적으로 문제를 설명하는 대신에, 중복 된 것으로 링크하는 사람들을위한 일반 참조 질문 입니다. 이 문제에 대한 실제 답변은 매우 구체적이기 때문에 이것이 필요하다고 생각합니다.

관련 메타 토론 :


왜 그럴까요?

시간이 지남에 따라 PHP는 보안에 중점을 둔 언어가되었습니다. 기본적으로 꺼져 있던 설정은 기본적으로 켜져 있습니다. 이것의 완벽한 예는 E_STRICT 이며, 이는 PHP 5.4.0부터 기본적으로 사용됩니다.

또한, PHP 문서에 따르면, 기본적으로 E_NOTICE 는 php.ini에서 사용할 수 없습니다. PHP 문서 는 디버깅 목적으로 켜는 것이 좋습니다. 그러나 우분투 저장소와 BitNami의 Windows 스택에서 PHP를 다운로드하면 다른 것을 볼 수 있습니다.

; Common Values:
;   E_ALL (Show all errors, warnings and notices including coding standards.)
;   E_ALL & ~E_NOTICE  (Show all errors, except for notices)
;   E_ALL & ~E_NOTICE & ~E_STRICT  (Show all errors, except for notices and coding standards warnings.)
;   E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

error_reporting 은 기본적으로 프로덕션 값으로 설정되며 기본적으로 "기본값"값으로 설정되지 않습니다. 이것은 다소 혼란스럽고 php.ini 외부에서 문서화되지 않았기 때문에 다른 배포판에서는이 사실을 확인 하지 않았습니다 .

그러나 귀하의 질문에 대답하기 위해이 오류는 다음과 같은 이유로 팝업되지 않습니다.

  1. PHP를 설치했는데 새 기본 설정은 문서화가 잘되어 있지 않지만 E_NOTICE 는 제외하지 않았습니다.

  2. 정의되지 않은 변수 및 정의되지 않은 색인과 같은 E_NOTICE 경고는 실제로 코드를보다 명확하고 안전하게 만듭니다. 몇 년 전, E_NOTICE 활성화하면 변수를 선언해야만했습니다. 변수 선언이 귀찮은 것보다 훨씬 더 까다로운 C를 배우기가 훨씬 쉬워졌습니다.

그것에 대해 무엇을 할 수 있습니까?

  1. "Default value" E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 를 복사하고 error_reporting = 등호 뒤에 현재 주석 처리가되지 않은 것으로 교체하여 E_NOTICE 를 끕니다. CGI 또는 FPM을 사용하는 경우 Apache 또는 PHP를 다시 시작하십시오. "올바른"php.ini 파일을 편집하고 있는지 확인하십시오. Apache-fpm 또는 php-fpm (PHP-FPM을 실행하는 경우), cgi (PHP-CGI를 실행하는 경우) 등을 사용하여 PHP를 실행하는 경우 올바른 Apache가됩니다. 이는 권장되는 방법은 아니지만 이전 코드가 있다면 편집하기가 너무 어렵다면 최선의 방법 일 수 있습니다.

  2. 파일 또는 폴더 수준에서 E_NOTICE 를 끕니다. 레거시 코드가 있지만 그렇지 않으면 "올바른"방식으로 수행하려는 경우이 방법이 바람직 할 수 있습니다. 이렇게하려면 Apache2, nginx 또는 선택한 서버가 무엇이든간에 문의해야합니다. 아파치에서는 <Directory> 안에 php_value 사용합니다.

  3. 코드를 더 깨끗하게 작성하십시오. 프로덕션 환경으로 이동하는 동안이 작업을 수행해야하거나 다른 사람이 오류를 보지 못하도록하려면 오류 표시를 비활성화하고 오류를 로깅 하십시오 (php.ini의 display_errorslog_errors 참조). 서버 설정).

옵션 3을 확장하려면 : 이것은 이상적입니다. 이 길로 갈 수 있으면해야합니다. 처음에는이 경로를 사용하지 않을 경우 개발 환경에서 코드를 테스트하여이 경로를 이동하는 것이 좋습니다. 당신이 그것에있을 때, ~E_STRICT~E_DEPRECATED 를 없애서 앞으로 무엇이 잘못 될지 알아보십시오. 익숙하지 않은 오류를 많이 보게 될 것이지만 앞으로 PHP를 업그레이드해야 할 때 불쾌한 문제가 발생하는 것을 막을 것입니다.

오류는 무엇을 의미합니까?

Undefined variable: my_variable_name - 사용하기 전에 변수가 정의되지 않은 경우 발생합니다. PHP 스크립트가 실행되면 내부적으로 null 값을 가정합니다. 그러나 어떤 시나리오에서 정의되기 전에 변수를 검사해야합니까? 궁극적으로 이것은 "엉성한 코드"에 대한 논거입니다. 개발자로서 정의 할 수있는 범위 내에서 변수가 정의 된 오픈 소스 프로젝트를 볼 때 내가 좋아한다는 것을 말할 수 있습니다. 미래에 어떤 변수가 나타날지 쉽게 알 수 있고 코드를 읽고 / 배우는 것을 더 쉽게 만듭니다.

function foo()
{
    $my_variable_name = '';

    //....

    if ($my_variable_name) {
        // perform some logic
    }
}

Undefined index: my_index - 배열의 값에 액세스하려고 시도했지만 존재하지 않는 경우에 발생합니다. 이 오류를 방지하려면 조건부 검사를 수행하십시오.

// verbose way - generally better
if (isset($my_array['my_index'])) {
    echo "My index value is: " . $my_array['my_index'];
}

// non-verbose ternary example - I use this sometimes for small rules.
$my_index_val = isset($my_array['my_index'])?$my_array['my_index']:'(undefined)';
echo "My index value is: " . $my_index_val;   

또 다른 옵션은 함수의 맨 위에 빈 배열을 선언하는 것입니다. 항상 가능한 것은 아닙니다.

$my_array = array(
    'my_index' => ''
);

//...

$my_array['my_index'] = 'new string';

(추가 팁)

  • 이 문제와 다른 문제가 발생했을 때 NetBeans IDE (무료)를 사용하여 경고 및주의 사항을 받았습니다. 그들 중 일부는 매우 유용한 팁을 제공합니다. 이것은 요구 사항이 아니며 대규모 프로젝트를 제외하고 더 이상 IDE를 사용하지 않습니다. 요즘 나는 vim 사람이다. :)

PHP 7.0에서는 이제 Null 병합 연산자를 사용할 수 있습니다.

echo "My index value is: " . ($my_array["my_index"] ?? '');

같음 :

echo "My index value is: " . (isset($my_array["my_index"]) ? $my_array["my_index"] : '');

PHP 매뉴얼 PHP 7.0


나는 자동으로 변수를 선언하는 유용한 함수 exst () 를 항상 사용한다.

귀하의 코드는 -

$greeting = "Hello, ".exst($user_name, 'Visitor')." from ".exst($user_location);


/** 
 * Function exst() - Checks if the variable has been set 
 * (copy/paste it in any place of your code)
 * 
 * If the variable is set and not empty returns the variable (no transformation)
 * If the variable is not set or empty, returns the $default value
 *
 * @param  mixed $var
 * @param  mixed $default
 * 
 * @return mixed 
 */

function exst( & $var, $default = "")
{
    $t = "";
    if ( !isset($var)  || !$var ) {
        if (isset($default) && $default != "") $t = $default;
    }
    else  {  
        $t = $var;
    }
    if (is_string($t)) $t = trim($t);
    return $t;
}

빠른 수정은 변수를 코드 상단의 null에 할당하는 것입니다.

$user_location = null;

시도해 보라.

Q1 :이 통고는 $ varname이 스크립트의 현재 범위에서 정의되지 않았다는 것을 의미합니다.

Q2 : 의심스러운 변수를 사용하기 전에 isset (), empty () 조건을 사용하면 잘 작동합니다.

// recommended solution for recent PHP versions
$user_name = $_SESSION['user_name'] ?? '';

// pre-7 PHP versions
$user_name = '';
if (!empty($_SESSION['user_name'])) {
     $user_name = $_SESSION['user_name'];
}

또는 빠르고 더러운 해결책으로 :

// not the best solution, but works
// in your php setting use, it helps hiding site wide notices
error_reporting(E_ALL ^ E_NOTICE);

세션에 대한 참고 사항 :


왜냐하면 변수 '$ user_location'이 정의되지 않기 때문입니다. '$ user_location'변수를 선언하고있는 내부의 if 루프를 사용하고 있다면 else 루프가 있어야하며이를 정의해야합니다. 예 :

$a=10;
if($a==5) { $user_location='Paris';} else { }
echo $user_location;

위의 코드는 if 루프가 만족스럽지 않고 else 루프 '$ user_location'이 정의되지 않은 오류를 생성합니다. 여전히 PHP는 변수를 출력하도록 요청 받았다. 따라서 코드를 수정하려면 다음을 수행해야합니다.

$a=10;
if($a==5) { $user_location='Paris';} else { $user_location='SOMETHING OR BLANK'; }
echo $user_location;

이 오류를 저주하는 데 사용했지만 사용자 입력을 피하도록 상기시키는 것이 도움이 될 수 있습니다.

예를 들어, 이것이 영리하다고 생각한다면, 단축형 코드 :

// Echo whatever the hell this is
<?=$_POST['something']?>

...다시 생각 해봐! 더 나은 해결책은 다음과 같습니다.

// If this is set, echo a filtered version
<?=isset($_POST['something']) ? html($_POST['something']) : ''?>

(나는 사용자 정의 html() 함수를 사용하여 문자를 이스케이프 처리합니다. 마일리지는 다를 수 있습니다)


일을 단순하게 유지하는 것이 어떻습니까?

<?php
error_reporting(E_ALL); // making sure all notices are on

function idxVal(&$var, $default = null) {
         return empty($var) ? $var = $default : $var;
  }

echo idxVal($arr['test']);         // returns null without any notice
echo idxVal($arr['hey ho'], 'yo'); // returns yo and assigns it to array index, nice

?>

입력 문자열 을 얻는 가장 좋은 방법은 다음과 같습니다.

$value = filter_input(INPUT_POST, 'value');

이 한 줄 짜기는 다음과 거의 같습니다.

if (!isset($_POST['value'])) {
    $value = null;
} elseif (is_array($_POST['value'])) {
    $value = false;
} else {
    $value = $_POST['value'];
}

문자열 값을 절대적으로 원한다면 다음과 같이하십시오.

$value = (string)filter_input(INPUT_POST, 'value');

정의되지 않은 인덱스 알림이 throw되는 또 다른 이유는 데이터베이스 쿼리에서 열이 생략 된 것입니다.

즉 :

$query = "SELECT col1 FROM table WHERE col_x = ?";

그런 다음 루프 내에서 더 많은 열 / 행에 액세스하려고합니다.

즉 :

print_r($row['col1']);
print_r($row['col2']); // undefined index thrown

또는 while 루프에서 :

while( $row = fetching_function($query) ) {

    echo $row['col1'];
    echo "<br>";
    echo $row['col2']; // undefined index thrown
    echo "<br>";
    echo $row['col3']; // undefined index thrown

}

주목해야 할 또 다른 점은 * NIX OS와 Mac OS X에서는 대소 문자가 구분된다는 것입니다.

스택에 대한 다음 Q & A를 참조하십시오.


즉, 아직 할당하지 않은 변수를 테스트, 평가 또는 인쇄한다는 의미입니다. 즉, 오타가 있거나 변수가 먼저 초기화되었는지 확인해야합니다. 논리 경로를 확인하십시오. 한 경로에는 설정 될 수 있지만 다른 경로에는 설정되지 않을 수 있습니다.


클래스로 작업하는 경우 $this 사용하여 멤버 변수를 참조해야합니다.

class Person
{
    protected $firstName;
    protected $lastName;

    public function setFullName($first, $last)
    {
        // Correct
        $this->firstName = $first;

        // Incorrect
        $lastName = $last;

        // Incorrect
        $this->$lastName = $last;
    }
}

ternary 사용하는 것은 간단하고 읽기 쉽고 깨끗합니다.

PHP 7 이전 버전
변수가 설정된 경우 다른 변수의 값에 변수를 할당하고, 그렇지 않으면 null (또는 필요한 기본값)을 할당합니다.

$newVariable = isset($thePotentialData) ? $thePotentialData : null;

PHP 7 이상
Null Coalescing Operator를 사용하는 것을 제외하면 동일합니다. 더 이상 isset() 이 내장되어 있으므로 호출 할 필요가 없으며 검사 할 변수의 값을 반환한다고 가정 할 때 반환 할 변수를 제공 할 필요가 없습니다.

$newVariable = $thePotentialData ?? null;

둘 다 OP 질문에서 고지 사항을 중단하며 둘 다 다음과 정확히 동일합니다.

if (isset($thePotentialData)) {
    $newVariable = $thePotentialData;
} else {
    $newVariable = null;
}


새로운 변수를 설정할 필요가 없다면 echo , 함수 인자 등과 같이 삼항의 반환 값을 직접 사용할 수 있습니다 :

에코:

echo 'Your name is: ' . isset($name) ? $name : 'You did not provide one';

기능:

$foreName = getForeName(isset($userId) ? $userId : null);

function getForeName($userId)
{
    if ($userId === null) {
        // Etc
    }
}

위의 코드는 세션 등을 포함하여 배열과 똑같이 작동하며, 검사 할 변수를 다음과 같이 바꿉니다.
$_SESSION['checkMe']
또는 당신이 필요로하는 많은 레벨, 예를 들면 :
$clients['personal']['address']['postcode']

억압:

PHP 알림을 @ 로 표시 하지 않거나 오류보고 수준을 낮출 수 있지만 문제를 해결하지는 못하고 단순히 오류 로그에보고 하지 않습니다 . 이것은 코드가 여전히 설정되지 않은 변수를 사용하려고 시도했음을 의미합니다. 누락 된 값이 얼마나 중요한지에 따라 의도 한대로 작동하지 않을 수도 있습니다.

정말로이 문제를 점검하고 적절하게 처리해야합니다. 다른 메시지를 제공하거나 정확한 상태를 식별하기 위해 다른 모든 것에 null 값을 반환하는 것입니다.

통지가 오류 로그에 없다면 옵션으로 오류 로그를 무시할 수 있습니다.


나는 이것에 관한 질문을했고 나는 메시지와 함께이 게시물에 언급되었다.

이 질문에는 이미 답변이 있습니다.

PHP를 사용하여 "주의 : 정의되지 않은 변수", "주의 : 정의되지 않은 색인"및 "통지 : 정의되지 않은 오프셋"

내 질문과 해결책을 여기에서 공유하고 있습니다.

이것은 오류입니다.

라인 154가 문제 다. 이것은 제가 154 행에있는 것입니다 :

153    foreach($cities as $key => $city){
154        if(($city != 'London') && ($city != 'Madrid') && ($citiesCounterArray[$key] >= 1)){

문제는 변수에 대한 조건 $city이 키가 아니라 값이 아니라면 쓰고 있다는 것 입니다 $key => $city. 첫째, 그것이 그 경고의 원인인지 확인할 수 있습니까? 둘째로, 그것이 문제라면, 왜 그 값에 기반한 조건을 쓸 수 없습니까? 조건을 작성하는 데 필요한 열쇠가 있어야합니까?

업데이트 1 : 문제는 실행 $citiesCounterArray[$key]시 때때로 배열에 $key존재하지 않는 키에 해당 $citiesCounterArray하지만 루프 루프의 데이터를 기반으로하는 경우는 아닙니다. 필요한 것은 조건을 설정 $key하여 배열에 존재하면 코드를 실행하고, 그렇지 않으면 건너 뛰십시오.

업데이트 2 : 다음과 같이 수정했습니다 array_key_exists().

foreach($cities as $key => $city){
    if(array_key_exists($key, $citiesCounterArray)){
        if(($city != 'London') && ($city != 'Madrid') && ($citiesCounterArray[$key] >= 1)){

파일을 처리 할 때 적절한 enctype과 POST 메소드가 필요합니다.이 메소드는 양식에 포함되지 않은 경우 정의되지 않은 색인 통지를 트리거합니다.

설명서에는 다음과 같은 기본 구문이 나와 있습니다.

HTML

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>

PHP

<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "File is valid, and was successfully uploaded.\n";
} else {
    echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r($_FILES);

print "</pre>";

?>

참고:


PHP에서는 사용할 수있는 변수를 정의하기 위해 주먹이 필요합니다.
우리는 변수가 매우 효율적으로 정의되어 있는지 검사 할 수 있습니다!.

//If you only want to check variable has value and value has true and false value.
//But variable must be defined first.

if($my_variable_name){

}

//If you want to check variable is define or undefine
//Isset() does not check that variable has true or false value
//But it check null value of variable
if(isset($my_variable_name)){

}

간단한 설명

//It will work with :- true,false,NULL
$defineVarialbe = false;
if($defineVarialbe){
    echo "true";
}else{
    echo "false";
}

//It will check variable is define or not and variable has null value.
if(isset($unDefineVarialbe)){
    echo "true";
}else{
    echo "false";
}

당신이 사용하는 변수가 없기 때문에 이러한 통지는 defined하고 my_index키에 제시되지 않은 $my_array변수입니다.

이러한주의 사항은 귀하 code의 의견이 정확하지 않기 때문에 매번 촉발 되었지만 통지서를받지 못했을 가능성이 큽니다.

버그를 해결하십시오 :

$my_variable_name = "Variable name"; // defining variable
echo "My variable value is: " . $my_variable_name;

if(isset($my_array["my_index"])){
    echo "My index value is: " . $my_array["my_index"]; // check if my_index is set 
}

이 문제를 해결하는 또 다른 방법은 다음과 같습니다.

ini_set("error_reporting", false)




undefined-index