我需要在string中的类型define中转换值。 目前我用这个:
/**
* @param mixed $val
* @param string $type
*
* @return bool|float|int|string
*/
protected function castTo($val, $type)
{
switch ($type) {
case 'boolean':
case 'bool':
return (boolean) $val;
case 'integer':
case 'int':
return (int) $val;
case 'string':
return (string) $val;
case 'double':
case 'float':
return (float) $val;
default:
return $val;
}
}
但是你知道一个更好的解决方案(在php 5.6和7+中)吗?
答案 0 :(得分:1)
使用intval
之类的功能等同于获得"动态句柄":
$funcs = ['boolean' => 'boolval', 'integer' => 'intval', 'string' => 'strval', 'float' => 'floatval', ...];
if (!array_key_exists($type, $funcs)) {
return $val;
} else {
return call_user_func($funcs[$type], $val);
}
请注意,这可能会比switch
更短,但不一定总体更好 ......
答案 1 :(得分:0)
喜欢@deceze解决方案...但直接在phplib中 http://php.net/manual/en/function.settype.php