我正在尝试过滤一个数组,其中过滤函数应该检查多个条件。例如,如果元素x以大写字母开头,则过滤函数应返回true。除非,如果元素x之前的元素满足某些其他条件,那么元素x应该不保留在数组中,因此过滤函数应该返回false。
问题是array_filter中的回调函数只传递元素的值而不是它的键...使用array_search做一些魔法可能会有效,但我只是想知道我是否在寻找这个特定问题的错误位置?
答案 0 :(得分:1)
$newArray=array();
foreach($oldArray as $key=>$value){
if(stuff){
$newArray[$key]=$value;
}
}
或
foreach($array as $key=>$value){
if(stuff){
unset($array[$key]);
}
}
答案 1 :(得分:1)
听起来好像是一个好的旧foreach循环:
foreach ($arr as $k => $v) {
// filter
if (!$valid)
unset($arr[$k]);
}
答案 2 :(得分:1)
你使用简单的foreach吗?
$prev;
$first = true;
$result = array();
foreach ($array as $key => $value)
{
if ($first)
{
$first = false;
// Check first letter. If successful, add it to $result
$prev = $value;
continue; // with this we are ignoring the code below and starting next loop.
}
// check $prev's first letter. if successful, use continue; to start next loop.
// the below code will be ignored.
// check first letter... if successful, add it to $result
}