Heim > Artikel > Backend-Entwicklung > Jemand hat mir geholfen, eine Array-Filterfunktion zu schreiben, die Parameter übergeben kann.
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; }
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