PHP中空字符串介紹0、null、empty和false之間的關(guān)系
如果用錯(cuò)方法函數(shù)或是用少了,如果幾個(gè)方法函數(shù)的邏輯順序錯(cuò)了,很可能就是一個(gè)漏洞,而且不容易找出來(lái)。糾結(jié)啊~
上網(wǎng)找找看哪位高人有總結(jié)出相關(guān)的結(jié)論出來(lái),果然有!不過(guò)似乎不是很全面,我在這里稍完善了一下,僅供參考。
// 判斷 0 與 ''、null、empty、false 之間的關(guān)系
$a = 0;
echo "0 與 ''、 empty、null、false 之間的關(guān)系:";
if($a == ''){
echo "0 == '';";
}else{
echo "0 != '';";
}
if(trim($a) == ''){
echo "trim(0) == '';";
}else{
echo "trim(0) != '';";
}
if(strval($a) == ''){
echo "strval(0) == '';";
}else{
echo "strval(0) != '';";
}
if($a === ''){
echo "0 === '';";
}else{
echo "0 !=== '';";
}
if(empty($a)){
echo "0 is empty;";
}else{
echo "0 is not empty;";
}
if(is_null($a)){
echo "0 is null;";
}else{
echo "0 is not null;";
}
if(is_numeric($a)){
echo "0 is numeric;";
}else{
echo "0 is not numeric;";
}
if(is_string($a)){
echo "0 is string;";
}else{
echo "0 is not string;";
}
if(!$a){
echo "0 is false;";
}else{
echo "0 is not false;";
}
// 判斷 '' 和 0、null、empty、false 之間的關(guān)系
$a = '';
echo "'' 和 0、empty、null、false 之間的關(guān)系:";
if($a == 0){
echo "'' == 0;";
}else{
echo "'' != 0;";
}
if(intval($a) == 0){
echo "intval('') == 0;";
}else{
echo "intval('') != 0;";
}
if(empty($a)){
echo "'' is empty;";
}else{
echo "'' is not empty;";
}
if(is_null($a)){
echo "'' is null;";
}else{
echo "'' is not null;";
}
if(is_numeric($a)){
echo "'' is numeric;";
}else{
echo "'' is not numeric;";
}
if(is_string($a)){
echo "'' is string;";
}else{
echo "'' is not string;";
}
if(!$a){
echo "'' is false;";
}else{
echo "'' is not false;";
}
// 判斷 null 和 ''、0、empty、false 之間的關(guān)系
$a = null;
echo "null 和 ''、0、empty、false 之間的關(guān)系:";
if($a == ''){
echo "null == '';";
}else{
echo "null != '';";
}
if($a == 0){
echo "null == 0;";
}else{
echo "null != 0;";
}
if($a === ''){
echo "null === '';";
}else{
echo "null !=== '';";
}
if($a === 0){
echo "null === 0;";
}else{
echo "null !=== 0;";
}
if(strval($a) == ''){
echo "strval(null) == '';";
}else{
echo "strval(null) != '';";
}
if(intval($a) == 0){
echo "intval(null) == 0;";
}else{
echo "intval(null) != 0;";
}
if(empty($a)){
echo "null is empty;";
}else{
echo "null is not empty;";
}
if(is_numeric($a)){
echo "null is numeric;";
}else{
echo "null is not numeric;";
}
if(is_string($a)){
echo "null is string;";
}else{
echo "null is not string;";
}
if(!$a){
echo "null is false;";
}else{
echo "null is not false;";
}
echo "";
輸出的結(jié)果是:

我想根據(jù)輸出結(jié)果都可以清楚了解決空字符串、0、null、empty和false之間的大概關(guān)系,在開(kāi)發(fā)過(guò)程中靈活運(yùn)用上述代碼里的方法,加上良好的邏輯,基本上應(yīng)該是不會(huì)出現(xiàn)問(wèn)題的了。
點(diǎn)擊下載相關(guān)源代碼
- java json不生成null或者空字符串屬性(詳解)
- Oracle數(shù)據(jù)庫(kù)中對(duì)null值的排序及mull與空字符串的區(qū)別
- ASP 空字符串、IsNull、IsEmpty區(qū)別分析
- js刪除對(duì)象/數(shù)組中null、undefined、空對(duì)象及空數(shù)組方法示例
- js判斷輸入框不能為空格或null值的實(shí)現(xiàn)方法
- jackson 實(shí)體轉(zhuǎn)json 為NULL或者為空不參加序列化(實(shí)例講解)
- JavaScript中undefined和null的區(qū)別
- javascript 中null和undefined區(qū)分和比較
- JavaScript基本類型值-Undefined、Null、Boolean
- js中null與空字符串""的區(qū)別講解
相關(guān)文章
詳解PHP實(shí)現(xiàn)異步調(diào)用的4種方法
這篇文章主要為大家詳細(xì)介紹PHP實(shí)現(xiàn)異步調(diào)用的4種方法,感興趣的小伙伴們可以參考一下2016-03-03php實(shí)現(xiàn)MD5加密16位(不要默認(rèn)的32位)
今天做了個(gè)php鏈接mssql數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中的表中字段使用MD5十六加密的。但是php中的MD5默認(rèn)是32位,導(dǎo)致登錄程序沒(méi)辦法使用md5加密跟表中字段匹配,在網(wǎng)上一搜也有不少人有這方面的困惑,后來(lái)找到一個(gè)解決辦法,是正確的,就記錄下來(lái)2013-08-08php實(shí)現(xiàn)用已經(jīng)過(guò)去多長(zhǎng)時(shí)間的方式顯示時(shí)間
這篇文章主要介紹了php實(shí)現(xiàn)用已經(jīng)過(guò)去多長(zhǎng)時(shí)間的方式顯示時(shí)間,可實(shí)現(xiàn)相對(duì)時(shí)間的顯示效果,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-06-06php array_intersect比array_diff快(附詳細(xì)的使用說(shuō)明)
在PHP中,使用 array_intersect 求兩個(gè)數(shù)組的交集比使用 array_diff 求同樣兩個(gè)數(shù)組的并集要快。2011-07-07php讀取torrent種子文件內(nèi)容的方法(測(cè)試可用)
這篇文章主要介紹了php讀取torrent種子文件內(nèi)容的方法,可實(shí)現(xiàn)讀取并顯示torrent種子文件內(nèi)容的功能,簡(jiǎn)單實(shí)用,需要的朋友可以參考下2016-05-05PHP實(shí)現(xiàn)RSA簽名生成訂單功能【支付寶示例】
這篇文章主要介紹了PHP實(shí)現(xiàn)RSA簽名生成訂單功能,涉及php隨機(jī)字符串及編碼相關(guān)操作技巧,以及支付寶公鑰文件讀取與使用方法,需要的朋友可以參考下2017-06-06php 遍歷顯示文件夾下所有目錄、所有文件的函數(shù),沒(méi)有分頁(yè)的代碼
一個(gè)簡(jiǎn)單的目錄遞歸函數(shù) 第一種實(shí)現(xiàn)辦法:用dir返回對(duì)象 第二種實(shí)現(xiàn)辦法:用readdir()函數(shù)2008-11-11