Heim  >  Artikel  >  Backend-Entwicklung  >  Jemand hat mir geholfen, eine Array-Filterfunktion zu schreiben, die Parameter übergeben kann.

Jemand hat mir geholfen, eine Array-Filterfunktion zu schreiben, die Parameter übergeben kann.

WBOY
WBOYOriginal
2016-12-01 00:57:061019Durchsuche

Damit werden die Elemente unter 123 im Array gelöscht.
Ich habe ein Experiment durchgeführt und das Ergebnis hat nicht funktioniert. Wie kann ich es ändern?

Lernen und studieren Sie die Elemente des Arrays, die nicht gelöscht werden...

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

Antwortinhalt:

Damit werden die Elemente unter 123 im Array gelöscht.
Ich habe ein Experiment durchgeführt und das Ergebnis hat nicht funktioniert. Wie kann ich es ändern?

Lernen und studieren Sie die Elemente des Arrays, die nicht gelöscht werden...

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

Ändern Sie else in user_array_filter in den folgenden Code

<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: Wenn Sie Array-Elemente löschen möchten, können Sie das Array foreachen und dann den gesamten Schlüssel mit unset() löschen, wenn die Bedingungen in der Schleife

nicht erfüllt sind
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