代码之家  ›  专栏  ›  技术社区  ›  indieman

如何将标准php函数传递给array\u map和array\u filter?

php
  •  2
  • indieman  · 技术社区  · 7 年前

    array_map array_filter 以数组和函数作为参数。

    如:

    $result = array_map(function (el) {
    // do stuff
    }, $elements)
    

    类似于 $result = array_map(boolval, $elements)

    编辑 上面的例子抛出了错误 Undefined constant boolval

    3 回复  |  直到 7 年前
        1
  •  3
  •   Madhur Bhaiya    7 年前

    您需要在的参数中以字符串形式传递函数(用户定义或内置)名称 array_map 功能。

    执行以下操作:

    $result = array_map('boolval', $elements);
    
        2
  •  1
  •   Salvatore Q Zeroastro    7 年前

    正常情况下,你只是跑

    $result = array_map('functionName', $array);
    

    $result = array_map([$objectInstance, 'functionName'], $array);
    

    如果函数在同一类中,那么

    $result = array_map([$this, 'functionName'], $array);
    
        3
  •  0
  •   Yves Kipondo    7 年前

    当你有任何需要 callable 作为一个参数,PHP函数通过其名称作为字符串传递。还有什么 PHP built-in user-defined array() echo empty() , eval() exit() , isset() , list() print unset() . 你可以在这里读更多 PHP Callbacks/Callables .

    call_user_func_array 第二个参数是一个数组,其中包含要调用的函数的参数

    $result = call_user_func_array('array_map', array(
        'boolval', array(
            "1", 
            '0', 
            true, 
            false
        )
    ));
    
    推荐文章