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基本類(lèi)型值-Undefined、Null、Boolean
- js中null與空字符串""的區(qū)別講解
相關(guān)文章
PHP 數(shù)字左側(cè)自動(dòng)補(bǔ)0
舉例來(lái)說(shuō):?jiǎn)T工的工號(hào) X001 雖然 MySQL 本身的字段設(shè)定成 zerofill 的屬性時(shí),會(huì)將不足位數(shù)的部份補(bǔ)上0,但是這個(gè)功能只能用在數(shù)字的字段上面。 所以必要的時(shí)候只好靠PHP來(lái)進(jìn)行了。2008-03-03
PHP5多態(tài)性與動(dòng)態(tài)綁定介紹
這篇文章主要介紹了PHP5多態(tài)性與動(dòng)態(tài)綁定介紹,本文主要講解了什么是多態(tài)性和什么是動(dòng)態(tài)綁定,并給出相應(yīng)實(shí)例,需要的朋友可以參考下2015-04-04
PHP環(huán)形鏈表實(shí)現(xiàn)方法示例
這篇文章主要介紹了PHP環(huán)形鏈表實(shí)現(xiàn)方法,結(jié)合具體實(shí)例形式分析了PHP環(huán)形鏈表的定義、創(chuàng)建及遍歷等操作技巧與注意事項(xiàng),需要的朋友可以參考下2017-09-09
php實(shí)現(xiàn)將二維關(guān)聯(lián)數(shù)組轉(zhuǎn)換成字符串的方法詳解
這篇文章主要介紹了php實(shí)現(xiàn)將二維關(guān)聯(lián)數(shù)組轉(zhuǎn)換成字符串的方法,涉及php數(shù)組遞歸遍歷、轉(zhuǎn)換、去重、拼接等相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
基于wordpress主題制作的具體實(shí)現(xiàn)步驟
本篇文章是對(duì)wordpress主題制作的具體實(shí)現(xiàn)步驟進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05

