我一直在努力使用array_search,虽然我认为我现在理解它,但我只是想确保理解我的代码执行方式背后的逻辑。
我正在尝试编写一个函数,如果数组不在数组中,则会向数组添加元素,如果是,则将其删除。简单,对吧?
$k = array_search($needle, $haystack)
if ( $k === FALSE ) {
$haystack[] = $needle;
} else {
unset($haystack[$k]);
}
这是最有效的写作方式吗?似乎应该有一种方法来分配$ k的值,同时检查它的值是否为FALSE或其他任何东西(包括0)?
答案 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);
}
?>