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