PHP中空字符串介紹0、null、empty和false之間的關(guān)系
如果用錯方法函數(shù)或是用少了,如果幾個方法函數(shù)的邏輯順序錯了,很可能就是一個漏洞,而且不容易找出來。糾結(jié)啊~
上網(wǎng)找找看哪位高人有總結(jié)出相關(guān)的結(jié)論出來,果然有!不過似乎不是很全面,我在這里稍完善了一下,僅供參考。
// 判斷 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)系,在開發(fā)過程中靈活運用上述代碼里的方法,加上良好的邏輯,基本上應(yīng)該是不會出現(xiàn)問題的了。
點擊下載相關(guān)源代碼
- java json不生成null或者空字符串屬性(詳解)
- Oracle數(shù)據(jù)庫中對null值的排序及mull與空字符串的區(qū)別
- ASP 空字符串、IsNull、IsEmpty區(qū)別分析
- js刪除對象/數(shù)組中null、undefined、空對象及空數(shù)組方法示例
- js判斷輸入框不能為空格或null值的實現(xiàn)方法
- jackson 實體轉(zhuǎn)json 為NULL或者為空不參加序列化(實例講解)
- JavaScript中undefined和null的區(qū)別
- javascript 中null和undefined區(qū)分和比較
- JavaScript基本類型值-Undefined、Null、Boolean
- js中null與空字符串""的區(qū)別講解
相關(guān)文章
php實現(xiàn)用已經(jīng)過去多長時間的方式顯示時間
這篇文章主要介紹了php實現(xiàn)用已經(jīng)過去多長時間的方式顯示時間,可實現(xiàn)相對時間的顯示效果,非常具有實用價值,需要的朋友可以參考下2015-06-06php array_intersect比array_diff快(附詳細的使用說明)
在PHP中,使用 array_intersect 求兩個數(shù)組的交集比使用 array_diff 求同樣兩個數(shù)組的并集要快。2011-07-07php讀取torrent種子文件內(nèi)容的方法(測試可用)
這篇文章主要介紹了php讀取torrent種子文件內(nèi)容的方法,可實現(xiàn)讀取并顯示torrent種子文件內(nèi)容的功能,簡單實用,需要的朋友可以參考下2016-05-05php 遍歷顯示文件夾下所有目錄、所有文件的函數(shù),沒有分頁的代碼
一個簡單的目錄遞歸函數(shù) 第一種實現(xiàn)辦法:用dir返回對象 第二種實現(xiàn)辦法:用readdir()函數(shù)2008-11-11