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

时间:2015-01-20 10:38:25

标签: php

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

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作为函数参数传递的问题。

你是如何处理的?

2 个答案:

答案 0 :(得分:1)

你错过了函数名称周围的引号:

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

答案 1 :(得分:0)

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

e.g。

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