>  기사  >  백엔드 개발  >  누군가 매개변수를 전달할 수 있는 배열 필터 함수를 작성하는 데 도움을 주었습니다. 어떻게 사용하나요?

누군가 매개변수를 전달할 수 있는 배열 필터 함수를 작성하는 데 도움을 주었습니다. 어떻게 사용하나요?

WBOY
WBOY원래의
2016-12-01 00:57:06979검색

배열에서 123개 미만의 항목을 삭제하는 것입니다.
실험을 했는데 결과가 안 나오네요. 어떻게 바꾸나요?

삭제되지 않는 배열의 요소를 알아보고 공부하세요...

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



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

echo '<pre class="brush:php;toolbar:false">';print_r($arr);echo '
'; 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; }

답글 내용:

배열에서 123개 미만의 항목을 삭제하는 것입니다.
실험을 했는데 결과가 안 나오네요. 어떻게 바꾸나요?

삭제되지 않는 배열의 요소를 알아보고 공부하세요..

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



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

echo '<pre class="brush:php;toolbar:false">';print_r($arr);echo '
'; 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; }

user_array_filter의 else를 다음 코드로 변경

<code>  else
    {
        $limit = $args[2];    // [0]->处理数组 , [1]->function , [2]->value

        foreach( $array as $k => $v )
        {
            $result = $callback($v, $limit);
            if( !$result )
            {
                unset($array[$k]);
            }
        }
    }
    
    
    
    </code>

ps: 배열 요소를 삭제하려면 배열을 foreach한 다음 루프에서 조건이 충족되지 않으면 전체 키를 unset()할 수 있습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.