首頁  >  文章  >  後端開發  >  php 資料型別轉換的判別

php 資料型別轉換的判別

怪我咯
怪我咯原創
2017-06-19 14:23:401383瀏覽

PHP 在變數定義中不需要(或不支援)明確的類型定義;變數類型是根據使用該變數的上下文所決定的。也就是說,如果把一個 string 值賦給變數 $var , $var 就成了一個 string 。如果再把一個 integer 賦給 $var ,那麼它就變成了一個 integer 。

PHP 的自動類型轉換的一個例子是加法運算子“+”。如果任何一個運算元是 float ,則所有的運算元都被當成 float ,結果也是 float 。否則運算元會解釋為 integer ,結果也是 integer 。注意這並沒有改變這些運算元本身的型別;改變的只是這些運算元如何被求值以及表達式本身的型別。

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

如果上面兩個例子看起來古怪的話,請參考字串轉換為數值。

如果要強制將一個變數當作某種型別來求值,請參考型別強制轉換一節。如果要改變一個變數的類型,請參閱 settype() 。

如果想要測試本節中任何範例的話,可以用 var_dump() 函數。

Note:

自動轉換為 陣列 的行為目前沒有定義。

此外,由於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) - 轉換為整形 integer

  • ( bool), (boolean) - 轉換為布林類型 boolean

  • #(float), (double), (real) - 轉換為浮點型 float

  • (string) - 轉換為字串 string

  • #(array) - 轉換為陣列 array

  • #(object) - 轉換為物件 object

  • (unset) - 轉換為 NULL (PHP 5)

#(binary) 轉換與b前綴轉換支援為PHP 5.2.1 新增。

注意在括號內允許有空格和製表符,所以下面兩個例子功能相同:

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

將字串文字和變數轉換為二進位字串:

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

Note:

可以將變數放置在雙引號中的方式來取代將變數轉換成字串:

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