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