PHP - 자료형 - Boolean, Integer , Float , String
자료형 - Boolean, Integer , Float , String
- 자료형
- Boolean
- true (참), false (거짓) 의 값을 가짐
- true, false는 상수이며, 대소문자 구별을 하지 않는다. (case insensitive)
- 타입 저글링에서는
- false, 0, 0.0 , 빈 문자열, 문자열 “0”, 빈 배열, NULL 등은 false로 간주됨.
-
실제 사용시에는 비어있는 것과, 문자열 “0”이 false로 처리된다는것만 주의하면 된다.
- Integer
- 정수형 숫자 (음의 정수, 0, 양의 정수 를 가진다.)
- -123 , 0 , 123
- unsigned 설정이 없다. (0과 양수만으로 설정하는 것이 불가)
- 정수 표현에 앞이
- “0” 으로 시작하면 8진수로 처리
-
$x = 0123;
- “0x” 로 시작하면 16진수로 처리
-
$y = 0x1A;
- “0b” 로 시작하면 2진수로 처리리
-
$z = 0b00110001;
- OS에 따라서 최대값이 달라진다. (32비트 = 4바이트, 64비트 = 8바이트)
- 상수 PHP_INT_SIZE, PHP_INT_MAX 를 참고.
- 32비트 : 4바이트 , 2147483647
-
64비트 : 8바이트 , 9223372036854775807
- 오버블로우시 자동으로 float로 변경된다.
-
0은 false로 처리되며, 그 외는 전부 true이다.
- Float
- 부동소수점숫자 , 실수 (음의실수, 0, 양의 실수)
- -123.123 , 0 , 123.123
- unsigned 설정이 없다. (0과 양수만으로 설정하는 것이 불가)
- float ,double 은 같은 자료형이다.
- php -r “var_dump((float)1.2 === (double)1.2);”
bool(true) -
php -r “var_dump((int)1 === (double)1.0);”
bool(false) - String
- 문자열
- 최대 2GB까지의 크기를 가질 수 있다.
- \로 시작하는 특수 문자열 표현이 있다. (Escaped characters)
-
\n (줄바꿈), \t (tab), \ (\ 표현) 등등
- 표현식(Syntax)
- $x = ‘x’;
-
문자열속 변수와 \n 같은 특수문자열 처리를 안한다.
- $x = “{$x}x”;
-
문자열속 변수와 \n 같은 특수문자열 처리를 한다.
- $sql = <<<SQL
select *
from $tablename
where id in [$order_ids_list]
and product_name = “widgets”
SQL; - Heredoc 표현식
- “<<<DOC” 로 시작하면 DOC가 나오기 전까지를 문자열로 처리한다.
- “와 ‘등을 그대로 문자열 안에 사용할 수 있다.
-
문자열속 변수와 \n 같은 특수문자열 처리를 한다.
- echo <<<‘END_OF_HTML’
$hello this is {$a->test}
END_OF_HTML; - Nowdoc 표현식
- “<<<‘DOC’” 처럼 작은 따옴표를 붙여서 사용하는 것 말고는 차이가 없다.
- PHP 5.3.0 부터 지원이 된다.
- “와 ‘등을 그대로 문자열 안에 사용할 수 있다.
-
문자열속 변수와 \n 같은 특수문자열 처리를 안한다.
-
Heredoc , Nowdoc 등은 잘 사용되지 않는다. 배보다 배꼽이 커지느 복잡도를 가질 수 있기 때문에…
- 팁
- 문자열은 문자의 배열이다.
- $str[0] ;
-
$str의 첫 문자(위치 : 1 byte)를 가져온다. (가져온 값은 1byte)
- $str[2] ;
-
$str의 세번째 문자(위치 : 3byte)를 가져온다.(가져온 값은 1byte)
- 다만 한글등의 멀티바이트 문자열에서는 바이트 단위로 값을 가져올 경우 사용못하는 값이 나올 수 있다.
-
단순히
if(isset($str[0])) //$str의 첫 바이트가 있는가? $str이 null이라도 에러가 발생되지 않는다.
처럼 문자열 변수 존재 체크용으로 사용하기 바람.