PHP開發過程的那些坑(二) ——PHP empty函式
阿新 • • 發佈:2022-05-03
PHP開發過程的那些坑(二)——PHP empty函式
(原創內容,轉載請註明來源,謝謝)
坑:
在工作過程中,常用empty()
函式判斷陣列是否為空,為空時返回true
,不是為空時返回false
。
但是,某次寫程式碼,用到array_diff($array1, $array2)
函式,該函式會判斷兩個陣列是否相等,如果相等是返回空陣列。
因此,我就很自然的想到,使用if(empty(array_diff($array1,$array2)))
來判斷兩個陣列是否一致,結果就悲劇了,一直報錯。
經過不斷的設斷點、error_log()
打log
,發現把array_diff
挪到外面就可以正常使用。經過查資料,才發現empty函式確實是不允許巢狀函式。
分析:
檢視PHP官方手冊,http://php.net/manual/zh/function.empty.php
,發現裡面有這麼一段話:“在 PHP 5.5 之前,empty()
僅支援變數;任何其他東西將會導致一個解析錯誤”。在更新日誌中,發現“PHP5.5.0 empty()
現在支援表示式了,而不僅僅是變數。”
因此,說明在PHP5.5或者更高的版本,是可以支援empty()
裡面傳其他內容的,但是如果使用PHP5.5之前的版本,還是先定義一個變數,再把這變數傳進empty
。
改進措施:
1、新定義一個變數,就上述例子:
$tmpArray = array_diff($array1, $array2); if(empty($tmpArray))
2、針對trim函式,官方文件提供了一個解決方案:
如果要實現empty(trim($name))
,可以使用trim($name)== false.
——written by linhxx 2017.07.08