如何在PHP中通过函数名字符串动态调用intval、floatval内置函数?
PHP动态调用格式化函数的可行性
你原本实现的格式化函数如下:
function formatValue($value, $functionString){ return $functionString === 'intval' ? intval($value) : floatval($value); }
你想简化成通过传入的函数名字符串直接调用对应函数的写法:
function formatValue($value, $functionString){ return {$functionString}($value); }
这种写法是可行的,这属于PHP的「可变函数」特性——允许通过字符串变量直接调用对应名称的函数。
实际上还有更简洁的写法,不需要加大括号也能正常运行:
function formatValue($value, $functionString){ return $functionString($value); }
注意事项
为了避免传入非法或不存在的函数导致报错,建议添加校验逻辑,限定仅允许指定的格式化函数:
function formatValue($value, $functionString){ $allowedFunctions = ['intval', 'floatval']; if (!in_array($functionString, $allowedFunctions)) { throw new InvalidArgumentException('不支持的格式化函数'); } return $functionString($value); }
内容的提问来源于stack exchange,提问作者Kasun Sampath Weligamage
相关产品推荐
相关产品推荐

