2009-02-16 62 views
4

在PHP中,這些總是會返回相同的值嗎?

//example 1 

$array = array(); 

if ($array) { 
    echo 'the array has items'; 

} 

// example 2 

$array = array(); 

if (count($array)) { 
    echo 'the array has items'; 

} 

謝謝!

回答

18

http://www.php.net/manual/en/language.types.boolean.php,它表示空數組被認爲是FALSE。


(引用): 當轉換爲布爾型,下面的值被認爲是FALSE:

  • 布爾值FALSE
  • 整數0(零)
  • 浮子0.0(零)
  • 空字符串和字符串「0」
  • 一個數組與零個元素
  • 零個成員變量的對象(PHP 4只)
  • 特殊類型NULL(包括尚未設定的變量)從空標籤

創建自

  • SimpleXML的對象
    • >> 0的count()不爲0
    • 填充陣列不是假的

    那麼問題中說明的兩種情況將始終按預期工作。

  • 1

    注意,第二實施例(使用count())是顯著慢,由至少50%的我的系統(超過10000次迭代)上。 count()實際上計數數組的元素。我不積極,但我想像將一個數組轉換爲一個布爾類型非常類似於empty(),並且一找到至少一個元素就會停下來。

    4

    那些總是返回相同的值,但我覺得

    $array = array(); 
    
    if (empty($array)) { 
        echo 'the array is empty'; 
    } 
    

    是一個很大的可讀性。