我有一个像这样的数组$ box_activ
Array
(
[0] => categories
[1] => add_a_quickie
[2] => last_viewed
[3] => whats_new
[4] => wishlist
)
通过
进行检查in_array('categories', $box_activ)
结果是 true 。
为什么我通过检查
得到 falseisset($box_activ['categories'])
我认为isset()是in_array()的性能方法。
答案 0 :(得分:1)
因为检查是否设置了数组中的索引/键,而另一个检查是否为数组中的任何索引/键分配了相等的值。
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.
答案 1 :(得分:0)
$box_activ['categories']
获取数组categories
中$box_activ
索引的元素。该元素不存在,因为categories
是索引0
处元素的值。
isset
确实比in_array
更快,但in_array
必须遍历整个数组,而isset
只需要检查传递给它的变量。
答案 2 :(得分:0)
isset($box_activ['categories'])
返回false,因为categories
是元素try isset($box_activ[0])
答案 3 :(得分:0)
数组中没有带有“类别”键的值。类别的关键是0,因此要使用isset,您必须获取该值的键..
$key = array_search('categories', $box_activ);
然后
isset($box_activ[$key])
将是真的,虽然没有必要检查,因为array_search已经验证了数组中有类别的值