簡體   English   中英

in_array()和isset()的結果不同

[英]Different result with in_array() and isset()

我有一個像這樣的數組$ box_activ

Array
(
    [0] => categories
    [1] => add_a_quickie
    [2] => last_viewed
    [3] => whats_new
    [4] => wishlist
)

通過檢查

in_array('categories', $box_activ)

結果是正確的

為什么我通過檢查得到錯誤的結果

isset($box_activ['categories'])

我認為isset()是in_array()的性能更高的方法。

因為一個檢查數組中的索引/鍵是否已設置,而另一個檢查是否為數組中的任何索引/鍵分配了相等的值。

Array
(
    [0] => categories
    [1] => add_a_quickie
    [2] => last_viewed
    [3] => whats_new
    [4] => wishlist
)

0、1、2、3、4是索引/鍵,類別,add_a_quickie等是每個索引具有的值。

isset($box_activ[0])
# should then return true.

要遍歷具有鍵和值的數組:

foreach($array AS $key=>$value)

PHP中的數組的工作原理非常類似於哈希圖,因為字符串也可以是索引/鍵:

$array['some string'] = 'some value';
echo $array['some string'];
# should print 'some value' to screen.

$box_activ['categories']獲取按數組$box_activ中的categories索引的元素。 該元素不存在,因為categories是索引0處元素的值。

isset確實比in_array快,但是in_array必須遍歷整個數組,而isset只需要檢查傳遞給它的變量即可。

isset($box_activ['categories'])返回false,因為categories是一個元素,請嘗試isset($box_activ[0])

數組中沒有鍵為“類別”的值。 類別的鍵是0,因此要使用isset,您必須獲取該值的鍵。

$key = array_search('categories', $box_activ);

接着

isset($box_activ[$key])

將為真,盡管無需檢查,因為array_search已驗證數組中是否存在類別的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM