搜索

首页  >  问答  >  正文

php - 别人帮我写了个可以传参的数组过滤函数,请问怎么用

这个就是删除数组中小于123的,
我做实验,结果不行,请问怎么改改?

边学习,边研究,不会删除的数组的元素..

$arr = Array(1 , 2 , 3713231987,3710001690,3713182016,3714441990,3713231932);



user_array_filter($arr, 'myGt' , 123 ) ;

echo '<pre>';print_r($arr);echo '</pre>';



function user_array_filter( &$array, $callback )
{
    $args = func_get_args();    //把function 所有参数保存成数组;



    if( count($args) < 2 )
        exit('function user_array_filter()参数错误 , 最少有两个参数.');




    if( count($args) == 2 )
    {
        foreach( $array as $k => $v )
        {
            $result = $callback($v);
            if( !$result )
            {
                return false;//★★★★★★★★★★★★★★★★★★★★★★
            }
        }
    } 
    else
    {
        $limit = $args[2];    // [0]->处理数组 , [1]->function , [2]->value

        foreach( $array as $k => $v )
        {
            $result = $callback($v, $limit);
            if( !$result )
            {
                return false;//★★★★★★★★★★★★★★★★★★★★★★
            }
        }
    }


}



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

全部回复(1)我来回复

  • PHPz

    PHPz2017-04-10 17:42:13

    将user_array_filter里面的else改成下面代码

      else
        {
            $limit = $args[2];    // [0]->处理数组 , [1]->function , [2]->value
    
            foreach( $array as $k => $v )
            {
                $result = $callback($v, $limit);
                if( !$result )
                {
                    unset($array[$k]);
                }
            }
        }
        
        
        
        

    ps:你要删除数组元素的话可以foreach数组然后在循环里面判断不满足条件的把整个键unset()掉就可以

    回复
    0
  • 取消回复