在5.3之前工作的替代PHP代码

时间:2012-10-04 20:55:25

标签: php arrays

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

$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);
});

它在我的localhost上工作得非常棒,它运行在PHP 5.3上,意味着它支持闭包(又名匿名函数),但它不能在我的在线托管上运行,它在PHP 5.2上运行。

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

感谢。

3 个答案:

答案 0 :(得分: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');

答案 1 :(得分: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];
}

答案 2 :(得分:1)

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

$user_id_ary = array_diff($user_id_ary, array_keys(array_filter($is_anonymous_ary)));