14

我正在寻找一个函数,它可以根据字符串的内容将数字字符串转换为整数或浮点类型,例如“1.23”-> float 1.23、“123”-> int 123。

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

4

5 回答 5

38

不,没有功能提供自动投射。但是,您可以使用这个简单的 hack 进行投射(投射由 PHP 在内部自动进行):

$int = "123"+0;
$float = "1.23"+0;

通用编号:

$yourNumberCasted = $yourStringNumber + 0;

有一个功能:

function castToNumber($genericStringNumber) { 
    return $genericStringNumber+0; 
}
$yourNumberCasted = castToNumber($yourStringNumber);
于 2013-05-17T10:05:54.340 回答
2

您可以使用以下行来满足您的要求。

 $i = "1.23";       
 echo $c = (double)$i; // will return 1.23

 $i = "123";       
 echo $c = (double)$i; // will return 123
于 2013-05-17T10:23:25.223 回答
1

没有内置功能可以做到这一点,但您可以快速创建自己的功能。

function castNumber($n)
{
   if(!is_numeric($n)) return 0;
   return (is_float($n)) ? (float) $n : (int) $n;
}

并使用它:

$casted = castNumber($num_to_cast);
于 2013-05-17T10:11:29.593 回答
0

这些都不适合我。但这是我的解决方案:

$numString = '1.0'; $intOrFloat = (strpos($numString, '.') !==false) ? floatval($numString) : intval($numString);

于 2018-05-18T12:49:48.427 回答
-1

有一个函数intval()与其他答案中提到的类型转换几乎相同,但是它不能用于对象。

也具有相同的功能:boolval()floatval().

于 2013-05-17T10:10:43.093 回答