suchen

Heim  >  Fragen und Antworten  >  Hauptteil

PHP 自定义数组过滤,或者自定义排序函数 怎么在自定义 function 传值?

比如 uasort($arr ,"myRegExp") 和 array_filter($arr,"myGt")

我要是想对 myRegExp 或者 myGt 传值的时候怎么弄?

比如这个 myGt 是个小于 88的函数:

1

2

3

4

5

6

<code>function myGt($val)

{

    if ($val >= 88)

        return true;

}

</code>

能不能把这个88也写到 array_filter 的参数里?

伊谢尔伦伊谢尔伦2905 Tage vor1023

Antworte allen(4)Ich werde antworten

  • PHP中文网

    PHP中文网2017-04-10 17:36:39

    何不尝试自己封装array_filter

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    <code>function user_array_filter($array = array(), $callback = null) {

        $args = func_get_args();

        if( count($args) < 2 ) {

            exit('Missing arguments for user_array_filter, two arguments at least');

        }

        if( count($args) == 2 ) {

            foreach( $array as $k => $v ) {

                $result = $callback($v);

                if( !$result ) {

                    return false;

                }

            }

        } else {

            $limit = $args[2];

            foreach( $array as $k => $v ) {

                $result = $callback($v, $limit);

                if( !$result ) {

                    return false;

                }

            }

        }

        return true;

    }

     

    function myGt($val, $limit = 88){

        if ($val >= $limit)

            return true;

        return false;

    }</code>

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-04-10 17:36:39

    自己写一个函数

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    <code>

    function filter_by_value ($array, $min)

    {

        if(is_array($array) && count($array)>0) 

        {

            foreach($array as $key => $value)

            {

                if($value > $min)

                {

                    $newarray[$key] = $value

                }

            }

        }

          return $newarray;

    }

         

    $arr = [10,78,91,101,410,7,36];

    print_r(filter_by_value($arr,88));</code>

    Antwort
    0
  • PHPz

    PHPz2017-04-10 17:36:39

    你看下函数手册
    http://php.net/manual/zh/func...

    Antwort
    0
  • 迷茫

    迷茫2017-04-10 17:36:39

    自定义数组过滤

    Antwort
    0
  • StornierenAntwort