[PHP] type and converting
1. PHP 자료형
자료형 확인 : gettype($foo)
1.1 기본 자료형 8개
1) scalar 형(스칼라) :
- boolean
- integer
- float (double)
- string
2) compound 집합형 :
- array
- object
3) 기타 :
- resource
- NULL
1.2 pseudo 형(가짜?)
- mixed
- number
- callback
2. 헷갈리는 NULL, FALSE, TRUE
2-1 NULL
말 그대로 'type 이 없는', 값이 할당되어 있지 않는 경우를 말하며,
boolean 는 FALSE 임.
(참고로, 값이 설정되어 있는데 그 값이 없다면(비어있다면) 이것은 FALSE 임)
PHP에서 NULL의 경우(할당이 되어 있지 않는 경우)는 다음과 같음.
- 상수 NULL 로 할당하는 경우
$x = NULL;
or
define('FOO',NULL);
- 아직 어떠한 값도 설정되어 있는 않는 경우
echo gettype($foo); // NULL, $foo not set
- unset()이 사용되는 경우
unset($foo);
echo gettype($foo); // NULL
2.2 FALSE
- (boolean) FALSE // FLASE, false 자체
- (integer) 0 // zero
- (float) 0.0 // zero
- (string) "" // 비어 있는 값(NULL이 아님)
- (string) "0" // string "0"
- (array) array() // 배열원소가 없는 배열, array(array()) 은 TRUE 임
- (object) // 맴버 변수가 하나도 없는 경우
- (NULL) NULL // NULL 은 FALSE 임
2.3 TRUE
앞의 FALSE 가 아닌 모든 경우(모든 resource 포함)
3. type conversion(available)
+-----------------------+-------+-------+-----+-------+--------------+--------+
|type |value |boolean|integer|float|string |array |object |
+--------+--------------+-------+-------+-----+-------+--------------+--------+
|boolean |FALSE |FALSE |0 | | | | |
| |TRUE |TRUE |1 | | | | |
+--------+--------------+-------+-------+-----+-------+--------------+--------+
|integer |0 |FALSE |0 |0.0 |"0" | | |
| |1 |TRUE |1 |1.0 |"1" | | |
| |-1 |TRUE |-1 |-1.0 |"-1" | | |
+--------+--------------+-------+-------+-----+-------+--------------+--------+
|float |0.0 |FALSE |0 |0.0 |"0.0" | | |
| |1.0 |TRUE |1 |1.0 |"1.0" | | |
+--------+--------------+-------+-------+-----+-------+--------------+--------+
|string |"" |FALSE | | |"" | | |
| |"0" |FALSE |0 |0.0 |"0" | | |
| |"1" |TRUE |1 |1.0 |"1" | | |
| |"-1" |TRUE |-1 |-1.0 |"-1" | | |
| |"TRUE" |TRUE | | |"TRUE" | | |
| |"FALSE" |TRUE | | |"FALSE"| | |
| |"foo" |TRUE | | |"foo" | | |
+--------+--------------+-------+-------+-----+-------+--------------+--------+
|array |array() |FALSE | | | |array() | |
| |array(0) |TRUE | | | |array(0) | |
| |array(NULL) |TRUE | | | |array(NULL) | |
| |array(array())|TRUE | | | |array(array())| |
+--------+--------------+-------+-------+-----+-------+--------------+--------+
|object |vars count = 0|FALSE | | | | |omission|
| |vars count > 0|TRUE | | | | |omission|
+--------+--------------+-------+-------+-----+-------+--------------+--------+
|resource|any |TRUE | | | | | |
+--------+--------------+-------+-------+-----+-------+--------------+--------+
|NULL |NULL |FALSE | | |"" *mk)| | |
| |(not set) |FALSE | | |"" *mk)| | |
| |unset($foo) |FALSE | | |"" *mk)| | |
+--------+--------------+-------+-------+-----+-------+--------------+--------+
*mk)
http://www.php.net/manual/en/language.types.string.php
*주)
(boolean)('any string' == 0) // return TRUE
(boolean)('any string' == "0") // return FALSE
EOF