将字符串转换为int或float

时间:2013-05-17 10:02:41

标签: php string casting numeric

我正在寻找一个将数字字符串转换为整数或浮点类型的函数,具体取决于字符串的内容,例如: “1.23” - > float 1.23,“123” - > int 123。

我知道我可以将if-s与is_int,is_float一起使用并转换为适当的类型 - 但也许有一个函数会自动执行吗?

5 个答案:

答案 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()