Heim  >  Artikel  >  Backend-Entwicklung  >  Ich habe eine Funktion zum Filtern des Arrays geschrieben, aber es fehlt immer ein Wert. Kann mir jemand helfen?

Ich habe eine Funktion zum Filtern des Arrays geschrieben, aber es fehlt immer ein Wert. Kann mir jemand helfen?

WBOY
WBOYOriginal
2016-12-01 00:56:551069Durchsuche

dient dazu, die minimalen und maximalen Werte zu filtern.
Allerdings habe ich bei
user_array_filter( $aTxt, 'After_A_Num' , $iMaxStamp);
festgestellt, dass einer und $iMaxStamp fehlten Werte sind gleich, kann mir jemand helfen herauszufinden, was los ist?
Ich kann nichts Falsches erkennen...
Ich habe eine Funktion zum Filtern des Arrays geschrieben, aber es fehlt immer ein Wert. Kann mir jemand helfen?

<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>

Antwortinhalt:

dient dazu, die minimalen und maximalen Werte zu filtern.
Allerdings habe ich bei
user_array_filter( $aTxt, 'After_A_Num' , $iMaxStamp);
festgestellt, dass einer und $iMaxStamp fehlten Werte sind gleich, kann mir jemand helfen herauszufinden, was los ist?
Ich kann nichts Falsches erkennen...
Ich habe eine Funktion zum Filtern des Arrays geschrieben, aber es fehlt immer ein Wert. Kann mir jemand helfen?

<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>

Um es klarzustellen, Ihr aktuelles Problem (der folgende Pseudocode) ist, wenn:

<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>

Aber das Ergebnis, das Sie erwarten, ist [6,6,7,7,45], oder?
Wenn dies der Fall ist, ändern Sie die Funktion After_A_Num von „größer als“ in „größer als oder gleich“.

Außerdem halte ich es nicht für gut, Ihre Funktion so zu benennen

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn