변수 유형 변경(저글링)
PHP는 선언된 변수에 변수 유형을 지정할 것을 요구하지 않습니다(또는 지원하지 않습니다). 변수 유형은 변수가 사용되는 컨텍스트에 따라 결정됩니다. 즉, 문자열을 변수에 할당하는 경우입니다. var는 문자열 변수가 됩니다. var에 정수를 할당하면 정수 변수가 됩니다.
변수 유형을 자동으로 변환하는 PHP의 예는 더하기 연산자 '+'입니다. 피연산자 중 하나라도 double이면 모든 피연산자는 double로 평가되며 결과도 double입니다. 그렇지 않으면 피연산자는 정수로 간주되어 결과는 정수가 됩니다. 이는 각 피연산자 자체의 변수 유형에 영향을 미치지 않으며 유일한 변경 사항은 계산 중에 피연산자가 처리되는 방식입니다.
$foo = "0"; // $foo는 값이 "0"인 문자열입니다(ASCII 48)
$foo++; // $foo는 값이 "1"인 문자열입니다(ASCII 49)
$foo += 1; // $foo는 이제 정수입니다. (2)
$foo = $foo + 1.3; // $foo는 이제 double입니다. (3.3)
$foo = 5 + "10 Little Piggies" // $ foo는 정수입니다. (15)
$foo = 5 + "10 작은 돼지"; // $foo는 정수입니다 (15)
위 예제의 마지막 두 표현식이 조금 이상하다고 생각되면 "문자열 변환" 섹션을 참조하세요.
변수를 고정 유형으로 평가하려면 "형변환" 섹션을 참조하세요. 변수의 유형을 변경하려면 "settype()" 함수 설명을 참조하세요.
변수 유형 결정
PHP는 변수 유형 자체를 결정하고 일반적으로 필요에 따라 유형을 변환하기 때문에 특정 변수의 유형이 항상 명확하지는 않습니다. PHP에는 이 변수의 유형을 알아내는 함수가 포함되어 있습니다. 이러한 함수는 gettype(), is_long(), is_double(), is_string(), is_array() 및 is_object()입니다.
타입 캐스팅
PHP의 유형 강제는 C 언어와 거의 동일합니다. 강제할 변수 앞에 필요한 유형을 괄호 안에 작성합니다.
$foo = 10; // $foo는 정수입니다.
$bar = (double) $foo; // $bar는 double입니다.
다음과 같은 강제 방법이 허용됩니다.
(int), (integer) – 정수로 강제 변환
(real), (double), (float) – 두 배로 강제
(문자열) – 문자열로 강제 변환
(array) – 배열로 강제 변환
(객체) – 객체를 강요하다
괄호 안에는 탭과 공백이 허용되므로 다음 명령문은 동일합니다.
$foo = (int) $bar;
$foo = (int) $bar;
문자열 변환
문자열이 숫자 값으로 평가되면 해당 결과와 유형은 아래 설명에 따라 결정됩니다.
이 문자열에 '.', 'e', 또는 'E' 문자가 포함되어 있으면 이중 유형 변수로 처리되고, 그렇지 않으면 정수로 처리됩니다.
이 문자열의 값은 접두사에 의해 결정됩니다. 문자열이 유효한 숫자 데이터로 시작하는 경우 숫자 데이터는 문자열이 평가되는 값입니다. 그렇지 않으면 값은 0입니다. 유효한 숫자 데이터는 다음 표기법을 따르고 그 뒤에 하나 이상의 숫자(소수점 포함 가능), 선택적 지수가 옵니다. 지수는 하나 이상의 숫자와 'e' 또는 'E'로 구성됩니다.
$foo = 1 + "10.5"; // $foo는 double입니다(11.5).
$foo = 1 + "-1.3e3"; // $foo는 double입니다(-1299).
$foo = 1 + "bob -1.3 e3"; // $foo는 정수입니다 (1)
$foo = 1 + "bob3"; // $foo는 정수입니다 (1)
$foo = 1 + "10 Small Pigs"; // $foo는 정수입니다 ( 11)
$foo = 1 + "10 Little Piggies"; // $foo는 정수입니다. (11)
// 이 문자열에는 'e' 문자가 포함됩니다
.
자세한 내용은 strtod(3)에 대한 Unix 매뉴얼 섹션을 참조하세요.