本文轉發來自: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
【注意】在進行字串轉換時應注意以下幾點:
- 一個布林值被轉換時則會將
true
轉換成1
,而false
值將會被轉換為空""
這裡空不是NULL,而是空的字串,這種轉換可以在布林值和字串之間隨意轉換。 - 一個整數或者浮點數被轉換字串,則會轉換為數字的字面樣式的字串,包括採用科學技術法記錄的浮點數。
- 陣列被轉換為字串
Aaary
,因此使用函式echo()
或者print()
無法正確的顯示出陣列的值,如果想要正確輸出陣列中的值則需要採用echo (array('$a'))
這種方式進行,也就是讀取陣列中值的方法。 - 資源總會被轉換為
Resource id#1
結構的字串,其中1是PHP分配給該資源獨有的數字。 - NULL總會被轉換為空的字串。
2.轉換為整數
想要將一個值轉換為整數,可以使用(int)
或者(integer)
進行強制轉換,不過大多數都不需要進行轉換,在使用運算子、函式或者判斷數值需要一個整數值時,值會自動轉換為整數,還可以通過intval()
函式進行轉換。
【注意】在進行轉換整數時需要注意以下兩點:- 當要將布林值轉換為整數時,則會將布林值中
true
轉換為1
,false
則會被轉換為0
。 - 當要將浮點數轉換為整數時,將向零取整,如果浮點數超出了整數範圍,則轉換結果變得不容易控制,這裡不建議將未知的浮點數轉換為整數,因為獲取的結果可能不是你想象的那樣哦,還有就是向零取整並不是四捨五入。
【示例】
輸出結果為:<?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
0
:整數零0.0
:浮點數零"0"
:字串零""
:空字串空陣列
:沒有任何值得陣列空物件
:沒有任何成員變數得物件NULL
:特殊型別NULL- 從沒有任何標記得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 協議》,轉載必須註明作者和本文連結