1

我在另一个问题中得到了以下代码的回答:

$user_id_ary = array_filter($user_id_ary, function($var) use ($is_anonymous_ary) {
  return !(isset($is_anonymous_ary[$var]) && $is_anonymous_ary[$var] === true);
});

它在我运行在 PHP 5.3 上的本地主机上运行得非常好,这意味着它支持闭包(又名匿名函数),但它不适用于运行在 PHP 5.2 上的在线主机。

在 PHP 5.3 之前是否有该代码的替代版本?

谢谢。

4

3 回答 3

2

您需要创建一个真正的函数来检查,并将其名称传递给array_filter.

function filter_user_id_ary($var) {
    global $is_anonymous_ary;
    return !(isset($is_anonymous_ary[$var]) && $is_anonymous_ary[$var] === 1);
}

$user_id_ary = array_filter($user_id_ary, 'filter_user_id_ary');
于 2012-10-04T21:00:28.463 回答
1
$new_array = array();
foreach($user_id_ary as $var){
    if(!(isset($is_anonymous_ary[$var]) && $is_anonymous_ary[$var] === 1))    
        $new_array[$var] = $user_id_ary[$var];
}
于 2012-10-04T21:00:40.253 回答
1

您的原始任务有一个更简单的解决方案(更简单的意思是不涉及回调函数):

$user_id_ary = array_diff($user_id_ary, array_keys(array_filter($is_anonymous_ary)));
于 2012-10-04T21:46:48.607 回答