PHP는 변수 선언부의 명시적인 타입 정의를 요구하지않는다(지원하지않는다) 변수의 타입은 변수가 사용되는 환경에서 결정된다. 즉, 문자열 값을 변수 $var에 지정하면,$var는 문자열이 된다. integer값이 $var에 지정되면, integer가 된다.
PHP의 자동적인 타입 변환의 예로는 덧셈 연산자 '+'를 들수 있다. 피연산자 중 어느 하나가 float이라면, 모든 피연산자는 float으로 취급된다. 그렇지 않으면, 피연산자는 정수로 해석될것이고, 결과값도 정수가 될것이다. 이런일이 피연산자 자신의 타입을 바꾸지 않는다는 것에 주의하라; 피연산자가 어떻게 평가되느냐에 따라서만 변환이 이루어진다.
<?php |
위 예제코드중 마지막 두가지가 이상해 보인다면, 문자열을 수로 변환을 참고.
어떤 변수를 특정 타입으로 취급하고자 한다면, 타입 캐스트 매뉴얼 섹션을 참고할것. 변수의 타입을 변환하려고 하면, settype()를 볼것.
이 섹션에서 다른 에제를 테스트하기 위해 var_dump() 함수를 사용할수 있다.
참고: 배열의 자동적인 변환 방식은 현재까지 정의되지 않았다.
PHP는 배열 인덱싱과 같은 문법을 사용하여 오프셋을 통하여 문자열 안의 인덱싱을 지원하기 때문에(역사적인이유로), 위 예제코드는 문제가 될 소지가 있다: $a는 그 첫번째 요소가 "f"를 갖는 배열이 되는가? "f"가 문자열 $a 문자열의 첫번째 문자가 되는가?
현재 버전 PHP는 두번째 할당문을 문자열 오프셋 인식으로 해석한다. 그래서 $a는 "f"가 되고, 자동 변환의 결과는 정의되지 않은것으로 여겨진다. PHP 4는 스트링 내의 문자에 접근하기 위한 중괄호 문법을 새로이 제공한다. 위에서 제시한것 대신 이문법을 사용하도록 한다
자세한 정보는 문자열의 문자 접근과 변경섹션을 참고.
PHP에서 타입 캐스느는 C에서 동작하는 것과 유사하게 동작한다. 원하는 타입의 이름을 변수 앞 괄호안에 사용하여 캐스트될수 있다.
허용되는 캐스트는 다음과 같다:
(int), (integer) - cast to integer
(bool), (boolean) - cast to boolean
(float), (double), (real) - cast to float
(string) - cast to string
(array) - cast to array
(object) - cast to object
탭과 빈칸이 괄호안에서 허용된다는것에 주의한다. 그래서 다음 예는 기능적으로 동일하다:
참고: 변수를 문자열로 캐스트하는 대신에, 큰 따옴표 안에 변수를 넣어줄수도 있다.
특정 타입간의 캐스트가 될때 무슨일이 일어날지 여기서 명확하지 않으면 자세한 정보를 보기 위해 아래 섹션을 참고.