PHP

PHP if문 정리

마리오64 2022. 3. 5. 23:41

PHP 코드를 보면 if 문에 변수들 체크하는 여러 방법들이 있습니다.

정리해보고자 합니다.

<?php
$apple = 2;
$mango = null;

망고와 사과변수가있습니다

PHP는 8버전까지 변수를 초기화 하지않고 쓸 수가 있습니다.( 9.0부터는 무조건 초기화 하게 변경됨)

따라서 변수가 있는지 없는지 부터 체크해야됩니다.

기본 1

if(isset($mango)){
  // true 조건
} else {

}

 

isset 은변수가 설정되어있는지 확인합니다.

(변수가 선언되어있는지 null 과 다른지 확인합니다.)

빈문자열 , null, undefind 만 false 나머지는 true 입니다.

$mango 는 null 이므로 false 입니다.

 

기본 2

if($mango){
 // true 조건
}

if문안에 변수만 달랑적는 경우가 있습니다.

변수만 적었을 경우 타입에 따라 다릅니다.

 

문자열: 빈문자 제외 true

숫자: 0 제외 true

배열: 빈배열 제외 true

객체: 빈 객체 제외 true

null : false

정의 안된 변수: 경고가 발생하고 false

 

패턴 1

if(isset($mango) && $mango){
   // true 조건

}

 

isset () && 뒤에 변수를 적은것은 선언하지않은 변수일때 경고를 내기 때문입니다.

PHP 에는 배열을 객체로 바꾸거나 빈 객체를 만들 수가 있습니다.

$testObejct = new stdClasss();

 

하지만 객체는 empty 함수나 if(!$emptyObject) if 문으로 체크할 수없습니다

__isset() 이라는 함수 때문이라고 합니다.

 

(array)$testObejct 로 배열로 형변환 할 수있지만 이러면 배열의 특성까지 지니게 되어서

램을 더먹습니다. (nikita 의 PHP 성능영상에서 봤네요[1])

따라서 get_object_vars 함수를 통해 체크해야됩니다.

if(empty(get_object_vars($testObject))) {
   // 비어있는 조건

} else {
 // 비어있지 않은 조건

}

 

 

[1] *객체를 (array)로 형변환시 메모리 더 쓰는자료 출처

nikita popov PHP 성능 영상

https://www.youtube.com/watch?v=JBWgvUrb-q8 

https://www.php.net/manual/en/types.comparisons.php

 

PHP: PHP type comparison tables - Manual

Some function to write out your own comparisson table in tsv format. Can be easily modified to add more testcases and/or binary functions. It will test all comparables against each other with all functions. '==',        'ne' => '!=',        'gt' =>

www.php.net

PHP isset, empty is_null 비교