【问题标题】:Alternative PHP code that works prior 5.3在 5.3 之前工作的替代 PHP 代码
【发布时间】:2012-10-04 20:55:25
【问题描述】:

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

$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 之前是否有该代码的替代版本?

谢谢。

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    你需要做一个真正的函数来检查,并将它的名字传递给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');
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我稍后会尝试您的解决方案并报告。
      【解决方案3】:
      $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];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-20
        • 1970-01-01
        • 2013-12-11
        • 2010-12-04
        • 1970-01-01
        • 2011-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多