项目在位置" 0" (关键)没有删除,为什么?

时间:2015-01-28 15:15:19

标签: php

我有这段代码:

    $arr = array(
    "0" => 30,
    "1" => 31,
    "2" => 32,
    "3" => 33
);

if ($key = array_search(30, $arr)) {
    unset($arr[$key]);
}

var_dump($arr);

为什么,如果30上的值$arr未被删除?如果您尝试任何其他值,例如3133代码,但第一个密钥却没有,我不知道为什么,任何建议?我在这里缺少什么?

4 个答案:

答案 0 :(得分:5)

if ($key = array_search(30, $arr))评估为0。

0是假值。

因此,您永远不会输入if语句

尝试:

$key = array_search(30, $arr);

if (FALSE !== $key) {
    unset($arr[$key]);
}

var_dump($arr)

答案 1 :(得分:4)

试试这个

if (FALSE !== $key = array_search(30, $arr)) {
    unset($arr[$key]);
}

var_dump($arr)

答案 2 :(得分:1)

因为

的结果
$key = array_search(30, $arr)

等于零,相当于布尔值假。

答案 3 :(得分:-1)

$key = array_search(30, $arr)

评估为0,这是假的。在if中,您尝试检查是否找到了该元素。如果找不到该元素,则array_search会返回FALSE,因此您的if应为:

if (($key = array_search(30, $arr)) !== FALSE) {

注意,我使用了!==运算符,即使评估为0,它也是TRUE。在这里使用!=运算符是错误的,这是仅当评估结果为真时才为真。