如何将标准的PHP函数传递给array_map和array_filter?

时间:2018-09-27 19:47:52

标签: php

this.wrappedarray_map之类的PHP函数采用一个数组,并将一个函数作为参数。

EG:

array_filter

是否可以通过相同的方式传递标准php函数?

$result = array_map(function (el) { // do stuff }, $elements) 相似的事物

编辑 上面的示例抛出错误$result = array_map(boolval, $elements)

3 个答案:

答案 0 :(得分:1)

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

执行以下操作:

$result = array_map('boolval', $elements);

答案 1 :(得分:1)

通常,您只需运行

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

如果是类函数,则必须在数组中传递对象实例和函数名称。

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

如果函数在同一类中,则

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

答案 2 :(得分:0)

如果有任何使用callable作为参数的函数,则PHP函数将以其名称作为字符串传递。并且可以使用任何PHP built-inuser-defined函数,除了诸如array()echoempty()eval(),{{ 1}},exit()isset()list()print。您可以在PHP Callbacks/Callables处阅读更多内容。

您可以通过以下方式调用任何函数:将其名称作为unset()的第一个参数,并将第二个参数传递给带有要调用的函数采用的参数的数组

call_user_func_array