1. 程式人生 > 其它 >PHP開發過程的那些坑(二) ——PHP empty函式

PHP開發過程的那些坑(二) ——PHP empty函式

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

相關閱讀:

PHP開發過程的那些坑(一) ——物件拷貝