基本上我有以下代码:
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
。这意味着您需要在调用unset
之前检查false
,如下所示:
$ix = array_search($i,$items)
if($ix !== false) {
unset($items[$ix]);
}