我有这段代码:
$arr = array(
"0" => 30,
"1" => 31,
"2" => 32,
"3" => 33
);
if ($key = array_search(30, $arr)) {
unset($arr[$key]);
}
var_dump($arr);
为什么,如果30
上的值$arr
未被删除?如果您尝试任何其他值,例如31
或33
代码,但第一个密钥却没有,我不知道为什么,任何建议?我在这里缺少什么?
答案 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
。在这里使用!=
运算符是错误的,这是仅当评估结果为真时才为真。