>  기사  >  백엔드 개발  >  배열을 필터링하는 함수를 작성했는데 항상 값이 누락되었습니다. 도와주실 수 있나요?

배열을 필터링하는 함수를 작성했는데 항상 값이 누락되었습니다. 도와주실 수 있나요?

WBOY
WBOY원래의
2016-12-01 00:56:551037검색

은 최소값과 최대값을 필터링하는 것입니다..
그러나
user_array_filter( $aTxt, 'After_A_Num' , $iMaxStamp);
할 때 하나와 $iMaxStamp가 누락된 것을 발견했습니다. 값이 동일합니다. 무슨 일이 일어나고 있는지 알려줄 수 있는 사람이 있나요?
뭔가 잘못된 게 보이지 않습니다...
배열을 필터링하는 함수를 작성했는데 항상 값이 누락되었습니다. 도와주실 수 있나요?

<code>
function user_array_filter( &$array, $callback )
//后面可以跟第3个参数,作为 $callback 的参数;
{
    $args = func_get_args();    //把function 所有参数保存成数组;


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


    if( count($args) == 2 )    //如果俩参数,就是有 $arr 和 $callback
    {
        foreach( $array as $k => $v )
        {
            $result = $callback($v);

            if( !$result )    //如果 function 返回 false ;
            {
                unset( $array[$k] );
            }
        }
    }



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

        foreach( $array as $k => $v )
        {
            $result = $callback($v, $limit);

            if( !$result )    //如果 function 返回 false ;
            {
                unset( $array[$k] );
            }
        }
    }

    $array = array_values($array);     //把键重定义;


}


    function Before_A_Num($num , $limit)
    {
        if ($num < $limit)
            return true;
        return false;
    }

    function After_A_Num($num , $limit)
    {
        if ($num > $limit)
            return true;
        return false;
    }
</code>

답글 내용:

은 최소값과 최대값을 필터링하는 것입니다..
그러나
user_array_filter( $aTxt, 'After_A_Num' , $iMaxStamp);
할 때 하나와 $iMaxStamp가 누락된 것을 발견했습니다. 값이 동일합니다. 무슨 일이 일어나고 있는지 알려줄 수 있는 사람이 있나요?
뭔가 잘못된 게 보이지 않습니다...
배열을 필터링하는 함수를 작성했는데 항상 값이 누락되었습니다. 도와주실 수 있나요?

<code>
function user_array_filter( &$array, $callback )
//后面可以跟第3个参数,作为 $callback 的参数;
{
    $args = func_get_args();    //把function 所有参数保存成数组;


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


    if( count($args) == 2 )    //如果俩参数,就是有 $arr 和 $callback
    {
        foreach( $array as $k => $v )
        {
            $result = $callback($v);

            if( !$result )    //如果 function 返回 false ;
            {
                unset( $array[$k] );
            }
        }
    }



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

        foreach( $array as $k => $v )
        {
            $result = $callback($v, $limit);

            if( !$result )    //如果 function 返回 false ;
            {
                unset( $array[$k] );
            }
        }
    }

    $array = array_values($array);     //把键重定义;


}


    function Before_A_Num($num , $limit)
    {
        if ($num < $limit)
            return true;
        return false;
    }

    function After_A_Num($num , $limit)
    {
        if ($num > $limit)
            return true;
        return false;
    }
</code>

분명히 말하면 현재 문제(다음 의사 코드)는 다음과 같습니다.

<code>$a = [1,3,45,6,6,7,7,5];
user_array_filter($a, 'After_A_Num', 6);
var_dump($a);    //目前的结果[7,7,45]</code>

그런데 기대하는 결과는 [6,6,7,7,45]이겠죠?
이 경우 After_A_Num 함수를 보다 큼에서 크거나 같음으로 수정하세요.

그리고 함수 이름을 이렇게 짓는 것도 좋지 않은 것 같아요

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