1 minute read

자료형 - 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이라도 에러가 발생되지 않는다.
    처럼 문자열 변수 존재 체크용으로 사용하기 바람.


🔗original-link

Updated: