我正在尝试搜索数组并查看其中是否包含值。如果值在数组中,那么数组中的值的索引将被传递到数组中。
问题是如果找不到值,则array_search返回FALSE,但由于false是布尔值,因此它也被视为0.当传递给unset以从数组中删除值时,索引0处的值将为0如果array_search返回false,则删除。
我很确定需要将它放入if语句中,但如果同时返回一个整数和一个布尔值,我将如何处理响应?
当前代码:
$pos = array_search($value, $array);
unset($array[$pos]);
答案 0 :(得分:3)
PHP Doc
说.. 此函数可能返回布尔值FALSE,但也可能返回a 非布尔值,其值为FALSE。请阅读有关的部分 布尔值获取更多信息。使用===运算符进行测试 返回此函数的值。
所以你需要这样做
<?php
$arr = [1,2,3];
$pos = array_search(4, $arr);
if($pos!==false)
{
unset($arr[$pos]);
}
print_r($arr);
<强> OUTPUT
强>
Array
(
[0] => 1
[1] => 2
[2] => 3
)
如您所见,保留了第一个索引。
答案 1 :(得分:0)
试试这个
if($pos !== false)
{
// do your work to unset
}
注意!==在上面的代码中
如果$ x不等于$ y,或者它们的类型不同,则$ x!== $ y为真
答案 2 :(得分:0)
你可以尝试这个脚本,希望这对你有帮助......
if(in_array($value, $array)){
$pos = array_search($value, $array);
unset($array[$pos]);
}