php中NULL false 0 有何區別?

2022-08-17 15:24:14 字數 966 閱讀 2611

php中很多還不懂php中0,"",null和false之間的區別,這些區別有時會影響到資料判斷的正確性和安全性,給程式的測試執行造成很多麻煩。

先看乙個例子:

$str1 = null;

$str2 = false;

echo $str1==$str2 ? 『相等』 : 『不相等』;

$str3 = "";

$str4 = 0;

echo $str3==$str4 ? 『相等』 : 『不相等』;

$str5 = 0;

$str6 = '0';

echo $str5===$str6 ? 『相等』 : 『不相等』;

$str7=0;

$str=false;

echo $str7==$str8 ? 『相等』 : 『不相等』;

?>

執行結果:

//相等,相等,不相等,相等。

原因是在php中變數是以c語言的結構體來儲存的,空字串和null,false都是以值為0儲存的,其中這個結構體有個zend_uchartype;這樣的成員變數,他是用來儲存變數的型別的,而空字串的型別是string,null的型別是null,false是boolean。

這一點可以用echo gettype('');和echogettype(null);來列印看看!而===運算子是不單比較值,還有比較型別的,所以第三個為false!

所以可以這樣說===是等於下面的函式:

function eq($v1,$v2) else

}所以空字串(''),false,null和0是值相等而型別不一樣!

注意:null是一種特殊的型別.

兩種情況下為null

1. $var = null;

2. $var;

3." "、0、"0"、null、false、array()、var $var; 以及沒有任何屬性的物件都將被認為是空的,如果var 為空,則返回 true。

N的階乘中末尾有幾個0

原位址 n的階乘中末尾有幾個0 如果n!k 10m,且k不能被10整除,那麼n!末尾有m個0。再考慮對n!進行質因數分解,n!2 x 3 y 5 z 由於10 2 5,所以m只跟x和z相關,每一對2和5相乘可以得到乙個10,於是m min x,z 不難看出x大於等於z,因為能被2整除的數出現的頻率比...

Mysql中前邊有0的資料,0會被捨去的問題

最近由於專案的需求,需要頻繁地拉取不同資料庫中的資料,拉取資料的過程中,各種問題,十分悲催,真所謂,乙個疏忽,你就要被推倒重來.在經歷了無數次被推倒又站起來,然後又被推倒的艱苦奮鬥歷程之後,終於完成了資料的遷移 更新 同步 修復。總結一下這期間遇到的部分問題 1 mysql中前邊有0的資料,0會被捨...

php中0和false的區別

在php中判斷boolean值是經常要用到的,想if語句,for語句,這些條件的執行很大一部分都是靠boolean來判斷的,很多時候false也等於0,當我們要返回的值中含有0的時候,例如對數字的查詢就要注意了,可以用 來判斷是否完全相等,php 測試boolean 0 false num 0 bt...