2014-03-19 39 views
0

試圖找到類似的問題,但沒有出現。如果您發現任何相關信息,請告訴我,我會關閉這一個。 好了,所以我有下面的代碼片段:PHP-IF聲明最佳場景

$fruits = ['Banana', 'Kiwi', 'Apple']; 
$fruits_no = count($fruits); 

現在讓我們說,我們需要檢查,如果任何值存儲陣列內或爲空/空我做任何進一步的聲明之前。爲此,我有兩個可能的IF:

if ($fruits_no > 0) { } 

if ($fruits) { } // Evaluates to TRUE since any positive Integer is TRUE 

我的問題是這兩個都是從性能視圖更好嗎?

+1

在這樣一個簡單的聲明中沒有可察覺的性能問題,爲您選擇最易讀的選擇。 – moonwave99

+0

在性能方面,您需要數十萬次迭代,導致過早優化。 – 2014-03-19 10:02:31

+1

@Eugen Zaharia:任何正整數和NEGATIVE整數評估爲true。 – lshettyl

回答

1

您的問題還不夠清楚,但我會留下多個選項。

首先,如果你想檢查數組是否(空),那麼在PHP中有empty()。請注意,在PHP 5.5之前,這不能用於表達式 - 因此,如果您的數據是某種表達式的結果,那麼在之前的PHP版本中將會出錯。其次,空數組與空數組的數組不同。例如,

$a = []; 
$b = ['']; 

var_dump(empty($a), empty($b));//true, false 

- 所以你應該決定怎麼做。幸運的是,有一種簡單的方法來轉換數組並清除空值。這是array_filter()

$fruits = ['', 0]; 
var_dump(array_filter($fruits));//array(0) { } 

因此,你可以用它與empty()檢查相結合。這就是爲什麼我所提到的empty()版本相關的行爲 - 在PHP 5.5等檢查可以完成此操作:

if(!empty(array_filter($fruits))) 
{ 
} 

- 但不是在PHP < = 5.4。在這些版本中,您必須在應用之前將array_filter()的結果存儲在單獨的變量中empty()

3

在我看來,檢查數組是否爲空的最好方法是使用empty()。例如:

if(!empty($fruits)) 
{ 
    // $fruits is not empty. 
} 
0

檢查您的示例的可能條件。

<?php 
$fruits = ['Banana', 'Kiwi', 'Apple']; 

if($fruits["0"]) 
{ 
    /* Present */ 
} 
if($fruits["0"] !="") 
{ 
    /* Present */ 
} 

if(isset($fruits["0"])) 
{ 
    /* Present */ 
} 

if($fruits["0"] == NULL) 
{ 
    /* Not Present */ 
} 

if($fruits["0"] == "") 
{ 
    /* Not Present */ 
} 
?> 
相關問題