알찬정보 툰코 개발 트렌드 이슈 코딩

알찬정보 툰코 개발 트렌드 이슈 코딩

  • PHP의 isset 함수 empty 함수

    hellowsydney8010

    2023년 10월 06일
    미분류
    PHP의 isset 함수 empty 함수

    PHP에서 변수가 있는지 또는 값이 들어있는지 확인할 수 있는 isset 함수와 empty 함수가 있다. isset 함수 같은 경우 변수가 존재하면 true 그렇지 않으면 false 를 리턴한다. empty 함수는 변수에 아무값도 들어있지 않을때 true 값을 그렇지 않으면 false 값을 리턴한다. 즉 empty 함수는 변수값 뿐만 아니라 변수가 존재 하지 않아도, true 값을 리턴한다.

    isset 함수와 empty 함수는 아래와 같은 인자값들을 받는다.

     isset 함수

    변수가 존재하면 true, 그렇지 않으면 false 를 return 한다.

     empty 함수

    변수의 값이 0  또는 null 값이라면 true, 값이 존재한다면 false 를 return 한다.

    이 두개의 함수는 워낙 많이 쓰는 함수라서, 잘 알고 있겟지만, empty 함수를 조심해야한다. 그이유는empty 함수는 변수가 존재하지 않아도 true 를 return 해주기 때문에 isset 대신 사용할 때가 많다. 하지만 별다른 생각없이 쓰다보면 아래와 같은 예제처럼 잘못된 결과를 불러 올 수 있다.

     소스코드

    <?php
    /*
    입력폼에서 아래와 같은 post 변수가 넘어왔다고 가정
    $_POST['user_number']=0;
    */
    if(!empty($_POST['user_number']))
    {
        $user_info='기존 유저';
    }
    else
    {
    $user_info='새로운 유저';
    }
    echo $user_info;
    ?>

     결과

    새로운 유저

    위의 소스코드를 보면 원래의 목적은  post 변수의 user_number 키값이 존재할 경우 user_info 변수에다가는 기존유저라는 값을 넣어주는것이다. 하지만 empty 함수를 써버리면, puser_number 라는 키값이 존재하더라도, 키값에 해당되는 값이 0 이기 때문에 true 를 return 하게 된다. 위의 if 조건문에서는 원래의 목적인 기존유저가 아닌 새로운 유저라는 값이 나오게 된다. 올바른 결과값을 얻기 위해선 아래와같이 isset 함수로 변경하여야한다.

     소스코드

    <?php
    /*
    입력폼에서 아래와 같은 post 변수가 넘어왔다고 가정
    $_POST['user_number']=0;
    */
    if(isset($_POST['user_number']))
    {
        $user_info='기존 유저';
    }
    else
    {
    $user_info='새로운 유저';
    }
    echo $user_info;
    ?>

    결과

    기존 유저

    만약 isset 함수와 empty 함수의 사용법이 헷갈릴경우엔 함수의 기본 정의을 생각하면된다. 그이유는 isset 함수의 정의는 변수가 있는지를 확인하는 것이고, empty 함수는 함수명 뜻그대로 비었는지를 확인하는 함수이다. 

    즉 다시 말해 변수가 선언이 되어 값이 null 또는 false 가 아닐 시에는 isset 함수를 사용하고, 변수의 존재유무를 신경쓰지않고 값이 존재하는지 확인할때는 empty 함수를 사용하면된다.   

    다음
    이전

    답글 남기기 응답 취소

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Subscribe to Our Newsletter!

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Subscribe Now

Copyright © 2023 Sydney Note

Design by ThemesDNA.com