我正在寻找一个函数,它可以根据字符串的内容将数字字符串转换为整数或浮点类型,例如“1.23”-> float 1.23、“123”-> int 123。
我知道我可以将 if-s 与 is_int、is_float 一起使用并强制转换为适当的类型 - 但也许有一个函数可以自动执行此操作?
不,没有功能提供自动投射。但是,您可以使用这个简单的 hack 进行投射(投射由 PHP 在内部自动进行):
$int = "123"+0;
$float = "1.23"+0;
通用编号:
$yourNumberCasted = $yourStringNumber + 0;
有一个功能:
function castToNumber($genericStringNumber) {
return $genericStringNumber+0;
}
$yourNumberCasted = castToNumber($yourStringNumber);
您可以使用以下行来满足您的要求。
$i = "1.23";
echo $c = (double)$i; // will return 1.23
$i = "123";
echo $c = (double)$i; // will return 123
没有内置功能可以做到这一点,但您可以快速创建自己的功能。
function castNumber($n)
{
if(!is_numeric($n)) return 0;
return (is_float($n)) ? (float) $n : (int) $n;
}
并使用它:
$casted = castNumber($num_to_cast);
这些都不适合我。但这是我的解决方案:
$numString = '1.0';
$intOrFloat = (strpos($numString, '.') !==false) ? floatval($numString) : intval($numString);
有一个函数intval()
与其他答案中提到的类型转换几乎相同,但是它不能用于对象。
也具有相同的功能:boolval()
和floatval()
.