天天看點

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

本文轉發來自:https://blog.csdn.net/KH_FC/article/details/115558701

在真正使用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

      則會被轉換為
    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

    3. :整數零
    4. 0.0

      :浮點數零
    5. "0"

      :字元串零
    6. ""

      :空字元串
    7. 空數組

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

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

      :特殊類型NULL
    10. 從沒有任何标記得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'."不是浮點數類型";
      }
      ?>           
  • gettype

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

    函數即輸出值也輸出類型

    gettype

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