2010-05-28 137 views
1

我有一個值列表,我必須檢查我的輸入是否存在。檢查值存在的最快方法

什麼是最快的方法?

這確實是出於好奇就如何內部工作,而不是任何東西約過早的優化等等

$x=array('v'=>'','c'=>'','w'=>); 

.. 

.. 

array_key_exists($input,$x); 

2.

$x=array('v','c','w'); 

.. 

.. 

in_array($input,$x); 
+0

爲什麼不看一眼PHP源代碼,如果你真的好奇內部工作是如何工作的? – 2010-05-28 12:04:27

+0

@Col。 Shrapnel最終會做到這一點,但我剛剛開始學習PHP的內幕,並且以結構化的方式進行。目前的問題來自我的觀點。 – 2010-05-28 13:08:35

回答

2

isset($x[$input])怎麼樣,如果適合您的需求,通常會擊敗所呈現的兩個。

在問題中的兩種方法中,array_key_existsin_array要做的工作要少,所以如果您只需要選擇那兩個,那麼array_key_exists就是它。

另外:你有關於「內部」的具體問題嗎?

+0

isset更快? – 2010-05-28 12:01:36

+0

@Itay isset * short * – 2010-05-28 12:03:37

+0

@Itay Moav,試試看看。在大多數情況下,它會是。它更短*從而節省我們可憐的,疲憊的手指。 – salathe 2010-05-28 12:03:48

0

我經驗,array_key_exists在99%的時間內更快,特別是隨着數組大小的增長。

被說,isset更快,因爲它做了一個哈希查找與數組值搜索,但isset將返回空值的false,如示例數組中所示。

+0

'isset'可以很好地處理「空白」值,儘管'NULL'會記住。 – salathe 2010-05-28 12:05:38

+0

空的意志,不isset不會 – 2010-05-28 12:05:57

+0

該死的,很好的捕獲,沒有想到當我張貼這:) :) – Jason 2010-05-28 18:59:53

相關問題