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

blxt發表於2021-04-12

本文轉發來自:blog.csdn.net/KH_FC/article/detail...
在真正使用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轉換為1false則會被轉換為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
    3. 0:整數零
    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'."不是浮點數型別";
    }
?>

輸出結果為:$int不是浮點數型別

小灶】在測試字元時經常會遇到不知道會輸出什麼型別得值,也不知道自己寫得變數是什麼型別時,可以採用gettype()或者var_dump()檢視變數或者值得資料型別

  • gettype函式只輸出值或變數得型別,不會輸出值
  • var_dump函式即輸出值也輸出型別
    示例】使用gettype函式輸出變數型別
    <?php
      $int = 0.1111;
      echo gettype($int);
    ?>
    輸出結果為:double也就是浮點數型別
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章