PHP 自定义数组过滤,或者自定义排序函数 怎么在自定义 function 传值?

比如 uasort($arr ,"myRegExp") 和 array_filter($arr,"myGt")

我要是想对 myRegExp 或者 myGt 传值的时候怎么弄?

比如这个 myGt 是个小于 88的函数:

function myGt($val)
{
    if ($val >= 88)
        return true;
} 

能不能把这个88也写到 array_filter 的参数里?

阅读 3.7k
4 个回答

何不尝试自己封装array_filter

function user_array_filter($array = array(), $callback = null) {
    $args = func_get_args();
    if( count($args) < 2 ) {
        exit('Missing arguments for user_array_filter, two arguments at least');
    }
    if( count($args) == 2 ) {
        foreach( $array as $k => $v ) {
            $result = $callback($v);
            if( !$result ) {
                return false;
            }
        }
    } else {
        $limit = $args[2];
        foreach( $array as $k => $v ) {
            $result = $callback($v, $limit);
            if( !$result ) {
                return false;
            }
        }
    }
    return true;
}

function myGt($val, $limit = 88){
    if ($val >= $limit)
        return true;
    return false;
}

自己写一个函数


function filter_by_value ($array, $min) 
{ 
    if(is_array($array) && count($array)>0)  
    { 
        foreach($array as $key => $value) 
        { 
            if($value > $min)
            {
                $newarray[$key] = $value;  
            }
        } 
    } 
      return $newarray; 
} 
    
$arr = [10,78,91,101,410,7,36];
print_r(filter_by_value($arr,88));

自定义数组过滤

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题