型別串php中null和false和0之間的區別

2021-09-06 09:50:32 字數 1313 閱讀 7827

近期個人幾篇文章介紹了改型別串的文章. 關聯文章的位址

php中很多還不懂php中0,"",null和false之間的區別,這些區別有時會影響到資料判斷的正確性和安全性,給程式的測試執行形成很多費事。所以必須好好的看好了下面的例子

簡單來說就是 他們的==和===的區別:第乙個是值相稱就為true    第二個必須是值和型別都相稱才是true

先看乙個例子:

<?

$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。

文章結束給大家分享下程式設計師的一些笑話語錄: 《諾基亞投資手機瀏覽器ucweb,資金不詳或控股》杯具了,好不容易養大的閨女嫁外國。(心疼是你養的嗎?中國創業型公司創業初期哪個從國有銀行貸到過錢?)

PHP 型別判斷和NULL,空值檢查

php是一種寬鬆型別的程式語言,在函式中對傳入的引數值的 型別 以及 值是否為空或者null 進行檢查是不可缺少的步驟。從php5開始,php允許對函式的引數進行型別約束,即可以約束引數的型別為物件,介面,陣列 php 5.1開始 或者callable php5.4起 但是不可以約束引數型別為標量型...

PHP 型別判斷和NULL,空值檢查

php是一種寬鬆型別的程式語言,在函式中對傳入的引數值的 型別 以及 值是否為空或者null 進行檢查是不可缺少的步驟。從php5開始,php允許對函式的引數進行型別約束,即可以約束引數的型別為物件,介面,陣列 php 5.1開始 或者callable php5.4起 但是不可以約束引數型別為標量型...

php中empty和null的區別

php中變數的值為empty的情況 empty的用法相信大家都很熟悉,下面說下,什麼情況下empty var 會輸出true 1 變數的值為空 var 2 變數的值為字串0或者數字0 var 0 或 者var 0 或者 var 0 或者var 0 3 變數的值為flase var flase 4 凡...