array_search和destroy逻辑错误

时间:2014-01-26 06:20:20

标签: php arrays logic

我正在尝试搜索数组并查看其中是否包含值。如果值在数组中,那么数组中的值的索引将被传递到数组中。

问题是如果找不到值,则array_search返回FALSE,但由于false是布尔值,因此它也被视为0.当传递给unset以从数组中删除值时,索引0处的值将为0如果array_search返回false,则删除。

我很确定需要将它放入if语句中,但如果同时返回一个整数和一个布尔值,我将如何处理响应?

当前代码:

$pos = array_search($value, $array);
unset($array[$pos]);

3 个答案:

答案 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]); 
}