[英]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.