基本上我有以下代码:
unset($items[array_search($i,$items)]);
当未找到键时,array_search 返回 false,相当于返回 0,如果未找到项值,则删除数组的元素 0。
有什么解决方法吗?
$itemindex = array_search($i,$items);
if ($itemindex !== false) {
unset($items[$itemindex]);
}
使用单独的变量和严格比较,只有在实际从数组中找到项目时才会运行 unset()。使用!==
与 false 的比较可以避免将 false 与 0 混淆,因为 0 也是 array_search 调用的有效返回值,在这种情况下,我们确实希望运行 unset()。
if(($i = array_search($i,$items)) !== false) {
unset($items[$i])
}
是一种可能的解决方法。
array_search
返回包含该值的(第一个)键,或者false
如果该值不存在。false
这意味着您需要在调用之前进行检查unset
,如下所示:
$ix = array_search($i,$items)
if($ix !== false) {
unset($items[$ix]);
}