Zeros in PHP
Jan 27, 2015해당 포스팅은 과거 2013년 11월 28일에 작성된 포스팅에 부가 설명을 첨부한 포스팅입니다. 작성할 당시 Zeros in Javascript를 보고난 후 PHP에서는 어떻게 작동할지 궁금해서 작성했었습니다.
다양한 값의 비교
PHP 코드를 짜다가 null과 0, 그리고 공백문자 empty(), isset() 등등을 자유자재로 쓰기 위해 만들어본 표입니다.
No Declair
의 경우 아무것도 지정하지 않은 변수를 사용하였습니다. ==
과 ===
의 경우에는 No Declair
의 경우 모두 Notice: Undefined..
경고를 발생시키나 에러가 뜨지 않는 다는 가정하에 표를 작성하였습니다.
== | true | 1 | -1 | "1" | "-1" | "string" | false | 0 | "0" | array() | "" | " " | null | array(0) | array(null) | No Declair |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
true | true | true | true | true | true | true | false | false | false | false | false | true | false | true | true | false |
1 | true | true | false | true | false | false | false | false | false | false | false | false | false | false | false | false |
-1 | true | false | true | false | true | false | false | false | false | false | false | false | false | false | false | false |
"1" | true | true | false | true | false | false | false | false | false | false | false | false | false | false | false | false |
"-1" | true | false | true | false | true | false | false | false | false | false | false | false | false | false | false | false |
"string" | true | false | false | false | false | true | false | true | false | false | false | false | false | false | false | false |
false | false | false | false | false | false | false | true | true | true | true | true | false | true | false | false | true |
0 | false | false | false | false | false | true | true | true | true | false | true | true | true | false | false | true |
"0" | false | false | false | false | false | false | true | true | true | false | false | false | false | false | false | false |
array() | false | false | false | false | false | false | true | false | false | true | false | false | true | false | false | true |
"" | false | false | false | false | false | false | true | true | false | false | true | false | true | false | false | true |
" " | true | false | false | false | false | false | false | true | false | false | false | true | false | false | false | false |
null | false | false | false | false | false | false | true | true | false | true | true | false | true | false | false | true |
array(0) | true | false | false | false | false | false | false | false | false | false | false | false | false | true | true | false |
array(null) | true | false | false | false | false | false | false | false | false | false | false | false | false | true | true | false |
No Declair | false | false | false | false | false | false | true | true | false | true | true | false | true | false | false | true |
=== | true | 1 | -1 | "1" | "-1" | "string" | false | 0 | "0" | array() | "" | " " | null | array(0) | array(null) | No Declair |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
true | true | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false |
1 | false | true | false | false | false | false | false | false | false | false | false | false | false | false | false | false |
-1 | false | false | true | false | false | false | false | false | false | false | false | false | false | false | false | false |
"1" | false | false | false | true | false | false | false | false | false | false | false | false | false | false | false | false |
"-1" | false | false | false | false | true | false | false | false | false | false | false | false | false | false | false | false |
"string" | false | false | false | false | false | true | false | false | false | false | false | false | false | false | false | false |
false | false | false | false | false | false | false | true | false | false | false | false | false | false | false | false | false |
0 | false | false | false | false | false | false | false | true | false | false | false | false | false | false | false | false |
"0" | false | false | false | false | false | false | false | false | true | false | false | false | false | false | false | false |
array() | false | false | false | false | false | false | false | false | false | true | false | false | false | false | false | false |
"" | false | false | false | false | false | false | false | false | false | false | true | false | false | false | false | false |
" " | false | false | false | false | false | false | false | false | false | false | false | true | false | false | false | false |
null | false | false | false | false | false | false | false | false | false | false | false | false | true | false | false | true |
array(0) | false | false | false | false | false | false | false | false | false | false | false | false | false | true | false | false |
array(null) | false | false | false | false | false | false | false | false | false | false | false | false | false | false | true | false |
No Declair | false | false | false | false | false | false | false | false | false | false | false | false | true | false | false | true |
다양한 값의 조건문 처리
기왕 작성하는거 자주 사용하는 조건문도 사용해보았습니다. with Error
라고 적은 부분은 Notice: Undefined..
경고를 나타내는 녀석입니다. 기본적으로 if
와 empty
그리고 isset
과 is_null
은 서로 반대값을 나타냅니다. 그리고 isset
과 empty
의 경우 선언되지 않는 변수를 사용하여도 경고를 발생하지 않습니다. 이 4가지의 미묘한 차이를 알면 다양한 상황에 잘 활용할 수 있을 것 같습니다. :)
Function | true | 1 | -1 | "1" | "-1" | "string" | false | 0 | "0" | array() | "" | " " | null | array(0) | array(null) | No Declair |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
if(...) | true | true | true | true | true | true | false | false | false | false | false | true | false | true | true | false (with Error) |
empty(...) | false | false | false | false | false | false | true | true | true | true | true | false | true | false | false | true |
isset(...) | true | true | true | true | true | true | true | true | true | true | true | true | false | true | true | false |
is_null(...) | false | false | false | false | false | false | false | false | false | false | false | false | true | false | false | true (with Error) |