array_search布尔返回值

时间:2013-03-29 16:10:57

标签: php

我一直在努力使用array_search,虽然我认为我现在理解它,但我只是想确保理解我的代码执行方式背后的逻辑。

我正在尝试编写一个函数,如果数组不在数组中,则会向数组添加元素,如果是,则将其删除。简单,对吧?

$k = array_search($needle, $haystack)
if ( $k === FALSE ) {
    $haystack[] = $needle;
} else {
    unset($haystack[$k]);
}

这是最有效的写作方式吗?似乎应该有一种方法来分配$ k的值,同时检查它的值是否为FALSE或其他任何东西(包括0)?

3 个答案:

答案 0 :(得分:3)

您可以这样缩短代码:

if (($k = array_search($needle, $haystack)) === FALSE) {
    $haystack[] = $needle;
} else {
    unset($haystack[$k]);
}

第一行代码执行搜索,将返回值存储在$ k中,并检查该值是否完全等于FALSE。

文档:array_search

答案 1 :(得分:0)

您的代码很好,但您可以这样做: -

if (($k = array_search($needle, $haystack)) == FALSE) 
{
$haystack[] = $needle;
} 
else 
{
unset($haystack[$k]);
}

答案 2 :(得分:0)

除了使用函数包装它之外,您可以重复使用它,您可以使用它。大多数其他例子只是重写你已经写过的内容。

<?php
$haystack = array(
'5','6','7',
);

$needles = array('3','4','2','7');
print_r($haystack);


function checker($needle,$haystack){
    $k = array_search($needle, $haystack);
    if ( $k === FALSE ) {
        $haystack[] = $needle;
    } else {
        unset($haystack[$k]);
    }
    return $haystack;
}


foreach($needles as $value){
    $haystack = checker($value,$haystack);
    print_r($haystack);

}



?>