>  기사  >  백엔드 개발  >  PHP 데이터 유형 변환의 차별

PHP 데이터 유형 변환의 차별

怪我咯
怪我咯원래의
2017-06-19 14:23:401381검색

PHP는 변수 정의에서 명시적인 유형 정의를 요구하거나 지원하지 않습니다. 변수 유형은 변수가 사용되는 컨텍스트에 따라 결정됩니다. 즉, $var 변수에 문자열 값을 할당하면 $var는 문자열이 됩니다. $var에 정수를 할당하면 정수가 됩니다.

PHP의 자동 유형 변환의 예는 덧셈 연산자"+"입니다. 피연산자 중 하나라도 float이면 모든 피연산자는 float로 처리되며 결과도 float입니다. 그렇지 않으면 피연산자는 정수로 해석되고 결과도 정수입니다. 이는 피연산자 자체의 유형을 변경하지 않고 피연산자가 평가되는 방식과 표현식 자체의 유형만 변경한다는 점에 유의하십시오.

<?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)
?>

위의 두 예가 이상해 보인다면 문자열을 숫자로 변환을 참조하세요.

변수를 특정 유형으로 평가하려면 유형 Coercion 섹션을 참조하세요. 변수 유형을 변경하려면 settype()을 참조하세요.

이 섹션의 예제를 테스트하려면 var_dump() 함수를 사용할 수 있습니다.

참고:

배열로의 자동 변환 동작은 현재 정의되지 않았습니다.

또한, PHP는 배열 첨자와 동일한 구문을 사용하여 문자열 첨자에 액세스하는 것을 지원하므로 다음 예는 모든 PHP 버전에서 유효합니다.

<?php
$a     =  &#39;car&#39; ;  // $a is a string
$a [ 0 ] =  &#39;b&#39; ;    // $a is still a string
echo  $a ;        // bar
?>

유형 캐스트

PHP와 C의 유형 캐스트는 매우 유사합니다. 대상 유형으로 변환할 변수를 괄호로 묶습니다.

<?php
$foo  =  10 ;    // $foo is an integer
$bar  = (boolean)  $foo ;    // $bar is a boolean
?>

허용되는 형변환은 다음과 같습니다:

  • (int), (integer) - 정수로 변환

  • (bool), (boolean) - boolean 유형 boolean

  • (float )으로 변환, (double), (real) - float로 변환 float

  • (string) - string으로 변환 string

  • (array) - array array

  • (object)로 변환 - object object

  • 로 변환
  • (설정되지 않음) - NULL로 변환(PHP 5)

(바이너리) 변환 및 b 접두사 변환 지원은 PHP 5.2.1의 새로운 기능입니다.

대괄호 안에 공백과 탭이 허용되므로 다음 두 예는 동일하게 작동합니다.

<?php
$foo  = (int)  $bar ;
$foo  = ( int )  $bar ;
?>

문자열 리터럴과 변수를 이진 문자열로 변환:

<?php
$binary  = (binary) $string ;
$binary  =  b"binary string" ;
?>

참고:

대신 변수를 큰따옴표로 묶을 수 있습니다. 변수를 문자열로 변환하는 방법:

<?php
$foo  =  10 ;             // $foo 是一个整数
$str  =  " $foo " ;         // $str 是一个字符串
$fst  = (string)  $foo ;  // $fst 也是一个字符串

// 输出 "they are the same"
if ( $fst  ===  $str ) {
    echo  "they are the same" ;
}
?>

위 내용은 PHP 데이터 유형 변환의 차별의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.