0

基本上我有以下代码:

unset($items[array_search($i,$items)]);

当未找到键时,array_search 返回 false,相当于返回 0,如果未找到项值,则删除数组的元素 0。

有什么解决方法吗?

4

3 回答 3

4
$itemindex = array_search($i,$items);
if ($itemindex !== false) {
  unset($items[$itemindex]);
}

使用单独的变量和严格比较,只有在实际从数组中找到项目时才会运行 unset()。使用!==与 false 的比较可以避免将 false 与 0 混淆,因为 0 也是 array_search 调用的有效返回值,在这种情况下,我们确实希望运行 unset()。

于 2013-08-13T09:04:03.813 回答
1
if(($i = array_search($i,$items)) !== false) { 
    unset($items[$i]) 
}

是一种可能的解决方法。

于 2013-08-13T09:03:37.510 回答
0

array_search返回包含该值的(第一个)键,或者false如果该值不存在。false这意味着您需要在调用之前进行检查unset,如下所示:

$ix = array_search($i,$items)
if($ix !== false) {
    unset($items[$ix]);
}
于 2013-08-13T09:04:14.670 回答