PHP는 변수 정의에서 명시적인 유형 정의를 요구하지 않습니다(또는 지원하지 않습니다). 변수 유형은 변수가 사용되는 컨텍스트에 따라 결정됩니다. 즉, $var 변수에 문자열 값을 할당하면 $var는 문자열이 됩니다. $var에 정수 값을 할당하면 정수가 됩니다.
PHP의 자동 유형 변환의 예는 추가 연산자 "+"입니다. 피연산자가 부동 소수점 숫자인 경우 모든 피연산자는 부동 소수점 숫자로 처리되며 결과도 부동 소수점 숫자입니다. 그렇지 않으면 피연산자가 정수로 해석되고 결과도 정수입니다. 이는 피연산자 자체의 유형을 변경하지 않고 피연산자가 평가되는 방식과 표현식 자체의 유형만 변경한다는 점에 유의하십시오.
<?php $foo = "0"; // $foo 是字符串 (ASCII 48) $foo += 2; // $foo 现在是一个整数 (2) $foo = $foo + 1.3; // $foo 现在是一个浮点数 (3.3) $foo = 5 + "10 Little Piggies"; // $foo 是整数 (15) $foo = 5 + "10 Small Pigs"; // $foo 是整数 (15) ?>
이 섹션의 예제를 테스트하려면 var_dump() 함수를 사용할 수 있습니다.
참고:
배열로의 자동 변환 동작은 현재 정의되지 않았습니다.
또한 PHP는 배열 첨자와 동일한 구문을 사용하여 문자열 첨자에 액세스하는 것을 지원하므로 다음 예는 모든 PHP 버전에서 유효합니다.
$a = ' car'; // $a는 문자열입니다
$a[0] = 'b'; // $a는 여전히 문자열입니다
echo $a; // bar
?>
유형 캐스팅
PHP의 유형 캐스팅은 C와 매우 유사합니다. 즉, 변환할 변수 앞에 대상 유형이 괄호로 묶여 있습니다.
<?php $foo = 10; // $foo is an integer $bar = (boolean) $foo; // $bar is a boolean ?>
허용되는 캐스트는 다음과 같습니다.
(int), (integer) - 정수 정수로 변환
(bool), (boolean) - 부울 유형으로 변환 boolean
(float), (double), (real) - float로 변환 float
(string) - 문자열로 변환 string
(array) - 배열로 변환 array
(object) - 객체로 변환 object
(unset) - NULL로 변환(PHP 5)
(바이너리) 변환 및 b 접두사 변환 지원이 추가되었습니다. PHP 5.2.1.
대괄호 안에 공백과 탭이 허용되므로 다음 두 예는 동일한 기능을 갖습니다.
$foo = (int) $bar;
$foo = (int) $bar;
?>
문자열 리터럴과 변수를 이진 문자열로 변환:
$binary = (이진) $string;
$binary = b"binary string";
?>
참고:
는 변수를 큰따옴표로 묶어 대체할 수 있습니다. 변수를 a로 변환 문자열:
<?php $foo = 10; // $foo 是一个整数 $str = "$foo"; // $str 是一个字符串 $fst = (string) $foo; // $fst 也是一个字符串// 输出 "they are the same" if ($fst === $str) { echo "they are the same"; } ?>
때로는 유형 간 변환 시 정확히 어떤 일이 발생하는지 명확하지 않을 수 있습니다. 자세한 내용은 아래를 참조하세요.
부울로 변환
정수로 변환
Float로 변환
문자열로 변환
다음으로 변환 배열
객체로 변환
리소스로 변환
NULL로 변환