在 PHP 的世界里,'0.0'、'0.00'和'0.000'是否被認為為空?
我們經常需要對0, 0.0,'0',false,null,'',"",array() 等等這類數據判斷是否為空,下面來整理一下。
1、以下變量都被認為是空。
' ' (空字符串)
0 (作為整數的0)
0.0 (作為浮點數的0)
"0" (作為字符串的0)
null
false
array( )(一個空數組)
$var;(一個聲明了,但是沒有值的變量)
2. 運行一下
1 <?php 2 3 if (empty(0.0)){ 4 echo 1; 5 }else{ 6 echo 2; 7 } 8 9 // 結果為1 10 11 if (empty("0.0")){ 12 echo 1; 13 }else{ 14 echo 2; 15 } 16 17 // 結果為2
說明:
1) PHP 認為 0.0 是空,同理 0.00 和 0.000 也會被等同 0.0、 '0'、"0" 一樣被認為是空,所以 empty 將返回 true 來表達 PHP 的規則。
2) PHP中,'0,0'、'0.0'、'0.00'和'0.000',"false"並不被認為是空,所以 empty 將返回 false。
3. PHP作為弱語言類型,在比較值時會做隱式轉換
1 <?php 2 // 比較值 3 if (0.0=='0.0'){ 4 echo 1; 5 }else{ 6 echo 2; 7 } 8 9 // 結果為1
4. 判斷數組是否為空
舉個例子
1 <?php 2 3 $arr = [""]; 4 if (empty($arr)) { 5 echo "數組為空"; 6 } else { 7 echo "數組不為空"; 8 } 9 10 // 結果:數組不為空
所以在判斷數組是否為空的時候,應該要先用array_filter()過濾之后再來判斷,否則容易出現跟預期不符的結果