如何将标准函数作为参数传递


How to pass a standard function as a parameter?

我想做这样的事情,但是...加工!

function _mathOperation($a, $b, $operation, $conversion)
{
    return $operation($conversion($a), $conversion($b));
}
echo _mathOperation(4,   5, function($a, $b) { return $a+$b; }, intval);
echo _mathOperation(4.6, 5, function($a, $b) { return $a+$b; }, floatval);

我在传递intvalfloatval作为函数参数时遇到问题。

你是怎么处理的?

您缺少函数名称周围的引号:

function _mathOperation($a, $b, $operation, $conversion)
{
    return $operation($conversion($a), $conversion($b));
}
echo _mathOperation(4,   5, function($a, $b) { return $a+$b; }, "intval");
//                                                             ^^      ^^
echo _mathOperation(4.6, 5, function($a, $b) { return $a+$b; }, "floatval");
//                                                             ^^        ^^

http://3v4l.org/AYiKN

您应该将转换参数作为函数名称传递,而不是尝试传递函数。

例如

<?php
echo _mathOperation(4,   5, function($a, $b) { return $a+$b; }, 'intval');