PHP5.5和之前的版本empty函數(shù)的不同之處
作為我最喜歡使用的函數(shù)之一,今天也終于發(fā)現(xiàn)這個(gè)函數(shù)的惡魔之處。洋洋灑灑寫了以下代碼,本地測試一切ok,到服務(wù)器上就SB了。
if(strlen($passwd) < 6 || empty($preg_replace("/\d/", "", $passwd))) {
//do something
}
大致的意思就是,密碼必須大于6位切不能只由數(shù)字組成。找遍服務(wù)器日志,發(fā)現(xiàn)如下錯(cuò)誤:
PHP Fatal error: Can't use function return value in write context in /xxx/xxx/xx.php on line xxx
google了一下,大概是說,empty的參數(shù)不能為函數(shù)。我靠,本地明明是好的。看了下本地的PHP是5.5的,服務(wù)器是5.3的。難道這函數(shù)在2個(gè)版本之間就進(jìn)化了么?找遍了PHP官方的文檔沒有發(fā)現(xiàn)任何端倪,然后google狂搜,不小心點(diǎn)到了PHP英文文檔界面,在empty函數(shù)的介紹下面,發(fā)現(xiàn)了一行小字:
Note:
Prior to PHP 5.5, empty() only supports variables; anything else will result in a parse error. In other words, the following will not work: empty(trim($name)). Instead, use trim($name) == false.
惡魔啊,不帶這么坑中文用戶的??偨Y(jié)下empty函數(shù)的使用場景:
1.PHP 5.5之前的版本,這個(gè)函數(shù)是用來檢查變量的賦值是否為0, false, 空字符串, null。任何非變量形式的參數(shù)都是導(dǎo)致這個(gè)函數(shù)報(bào)錯(cuò)。
2.PHP 5.5這個(gè)函數(shù)可以應(yīng)用于任何值,而不局限于變量??梢詾槌A俊⒑瘮?shù)返回值等等。
- 如何把php5.3版本升級到php5.4或者php5.5
- PHP5.5在windows安裝使用memcached服務(wù)端的方法
- php5.5中類級別的常量使用介紹
- php5.5新數(shù)組函數(shù)array_column使用
- php可應(yīng)用于面包屑導(dǎo)航的迭代尋找家譜樹實(shí)現(xiàn)方法
- php使用遞歸與迭代實(shí)現(xiàn)快速排序示例
- PHP迭代器的內(nèi)部執(zhí)行過程詳解
- PHP迭代器實(shí)現(xiàn)斐波納契數(shù)列的函數(shù)
- PHP設(shè)計(jì)模式之迭代器模式的深入解析
- PHP5.5迭代生成器用法實(shí)例詳解
相關(guān)文章
PHP PDO數(shù)據(jù)庫操作預(yù)處理與注意事項(xiàng)
今天小編就為大家分享一篇關(guān)于PHP PDO數(shù)據(jù)庫操作預(yù)處理與注意事項(xiàng),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03
php判斷輸入不超過mysql的varchar字段的長度范圍
varchar類型字段,如果你設(shè)置長度為10,那么不論漢字和英文都可以存10個(gè)。2011-06-06
PHP 實(shí)現(xiàn)判斷用戶是否手機(jī)訪問
這篇文章主要介紹了PHP 實(shí)現(xiàn)判斷用戶是否手機(jī)訪問的方法,十分實(shí)用的功能,推薦給有需要的小伙伴。2015-01-01

