天天看點

自學PHP筆記 (三) 類型轉換

在真正使用PHP寫項目時會經常用到不同資料類型之間進行轉換,PHP中類型轉換是比較簡單的,隻需要在變量前面加上用括号括起來的資料類型名稱就可以了,資料類型轉換有以下幾種:

轉換類型 說明
(bool)(boolean) 轉換為布爾值
(string) 轉換為字元串
(int)(integer) 轉換為整數
(float)(double)(real) 轉換為浮點型
(array) 轉換為數組
(object) 轉換為對象
(unset) 轉換為NULL,也就是删除變量
(binary)b字首 轉換為二進制字元串

除了上面幾種轉換方式還有一個使用​

​settype()​

​函數進行轉換

【示例】使用​

​settype()​

​函數進行資料類型轉換

<?php
$a = "abc";
$b = 123;
settype( $b, "float");
var_dump($b);
?>
      

輸出結果為:​

​float(123)​

【方法】​

​settype()​

​使用方法

函數内第一個為變量,在上面示例中為​

​$b​

​,第二個參數為資料類型,也就是你想将這個變量值轉換為哪種類型,在上面示例中使用的是​

​float​

​,在PHP7版本中支援boolean、float、integer、string、null、array、object。注意:此函數隻能傳回布爾值,可用于判斷,類型轉換成功則傳回​

​true​

​,轉換失敗則傳回​

​false​

【示例】轉換資料類型的常用方法

<?php
$num = '123abc';
var_dump((integer)$num);
echo '<br>';
var_dump((float)$num);
echo '<br>';
var_dump((string)$num);
?>
      

輸出結果為:

int(123)
float(123)
string(6) "123abc"
      

1.轉換為字元串

一個值可以通過在值前面加上​

​(string)​

​或者​

​(strval)​

​函數來轉換為字元串,在一個需要字元串的表達式中,字元串會自動轉換,在使用函數​

​echo()​

​print()​

​時,或者在一個變量和一個字元串進行比較時,就會發生這種轉型。​

​print()​

​類似于​

​print_r()​

​。

【示例】

<?php 
$str = 'abcdef';
$num = 12345.123;
var_dump((string)$num);
echo '<br>';
if ($str == 'abcdef') {
echo true;
  }
?>
      
string(9) "12345.123"
1
      

【注意】在進行字元串轉換時應注意以下幾點:

  1. 一個布爾值被轉換時則會将​

    ​true​

    ​轉換成​

    ​1​

    ​,而​

    ​false​

    ​值将會被轉換為空​

    ​""​

    ​這裡空不是NULL,而是空的字元串,這種轉換可以在布爾值和字元串之間随意轉換。
  2. 一個整數或者浮點數被轉換字元串,則會轉換為數字的字面樣式的字元串,包括采用科學技術法記錄的浮點數。
  3. 數組被轉換為字元串​

    ​Aaary​

    ​,是以使用函數​

    ​echo()​

    ​print()​

    ​無法正确的顯示出數組的值,如果想要正确輸出數組中的值則需要采用​

    ​echo (array('$a'))​

    ​這種方式進行,也就是讀取數組中值的方法。
  4. 資源總會被轉換為​

    ​Resource id#1​

    ​結構的字元串,其中1是PHP配置設定給該資源獨有的數字。
  5. NULL總會被轉換為空的字元串。

2.轉換為整數

想要将一個值轉換為整數,可以使用​

​(int)​

​(integer)​

​進行強制轉換,不過大多數都不需要進行轉換,在使用運算符、函數或者判斷數值需要一個整數值時,值會自動轉換為整數,還可以通過​

​intval()​

​函數進行轉換。

【注意】在進行轉換整數時需要注意以下兩點:

  1. 當要将布爾值轉換為整數時,則會将布爾值中​

    ​true​

    ​轉換為​

    ​1​

    ​,​

    ​false​

    ​則會被轉換為​

    ​0​

  2. 當要将浮點數轉換為整數時,将向零取整,如果浮點數超出了整數範圍,則轉換結果變得不容易控制,這裡不建議将未知的浮點數轉換為整數,因為擷取的結果可能不是你想象的那樣哦,還有就是向零取整并不是四舍五入。
<?php
$bool = true;
$float = 10.6111;
$abc = ( 0.1 + 0.7 ) *10;
echo intval($bool);
echo '<br>';
echo intval($float);
echo '<br>';
echo (int)$abc;
?>
      
1
10
7
      

這個示例可以看出正常情況下​

​$abc​

​運算結果為​

​8​

​,但是當轉換為整型後确輸出了​

​7​

​,輸出結果不正确,是以在浮點數轉換整數時一定要注意。

3. 轉換為布爾值

想要将一個值轉換為布爾值是比較簡單的,隻需要使用​

​(bool)​

​(boolean)​

​來強制轉換為布爾值即可,大部分情況下是不需要進行轉換的,當使用運算符、函數或者做判斷時都可以自動轉換為布爾值的。

【注意】在轉換布爾值時需要注意下面幾個值轉換則會轉換為​

​false​

  1. ​0​

    ​:整數零
  2. ​0.0​

    ​:浮點數零
  3. ​"0"​

    ​:字元串零
  4. ​""​

    ​:空字元串
  5. ​空數組​

    ​:沒有任何值得數組
  6. ​空對象​

    ​:沒有任何成員變量得對象
  7. ​NULL​

    ​:特殊類型NULL
  8. 從沒有任何标記得XML文檔生成得SimpleXML對象

    除了以上值所有類型所有值都會轉換為​

    ​true​

<?php
$array = array();
$int = 1;
$str = "";
var_dump((bool)$array);
echo '<br>';
var_dump((bool)$int);
echo '<br>';
var_dump((bool)$str);
?>
      
bool(false)
bool(true)
bool(false)
      

4. 檢測資料類型

在很多時候都需要由程式自動去判斷資料類型,PHP内置了一些檢測資料類型得函數,可以根據不同得類型進行檢測,判斷是否屬于某種類型,如果符合則傳回​

​true​

​,如果不符合則傳回​

​false​

​。常用得資料類型檢測函數:

檢測函數
is_bool 檢測變量是否為布爾值
is_string 檢測變量是否為字元串
is_float 檢測變量是否為浮點數
is_int 檢測變量是否為整數
is_null 檢測變量是否為空
is_array 檢測變量是否為數組
is_object 檢測變量是否為對象
is_numeric 檢測變量是否為數字或者是數字組成得字元串
is_double

【示例1】判斷是否為整數

<?php
$int = 100;
if (is_int($int)){
echo '$int'."是整數類型,并且整數值為$int";
  }else{
echo '$int'."不是整數類型";
  }
?>
      

​$int是整數類型,并且整數值為100​

【示例2】判斷是否為浮點數

<?php
$int = 100;
if (is_float($int)){
echo '$int'."是浮點數類型,并且浮點數值為$int";
  }else{
echo '$int'."不是浮點數類型";
  }
?>
      

​$int不是浮點數類型​

【小竈】在測試字元時經常會遇到不知道會輸出什麼類型得值,也不知道自己寫得變量是什麼類型時,可以采用​

​gettype()​

​var_dump()​

​檢視變量或者值得資料類型

  • ​gettype​

    ​函數隻輸出值或變量得類型,不會輸出值
  • ​var_dump​

    ​函數即輸出值也輸出類型

    ​gettype​

    ​函數輸出變量類型
<?php
$int = 0.1111;
echo gettype($int);
?>