我想将这些类型的值“3”、“2.34”、“0.234343”等转换为数字。在JavaScript中,我们可以使用Number(),但在PHP中有没有类似的方法?

Input             Output
'2'               2
'2.34'            2.34
'0.3454545'       0.3454545

当前回答

如果您希望为$value=“0.4”获取浮点值,但为$value=“4”获取int值,则可以编写:

$number = ($value == (int) $value) ? (int) $value : (float) $value;

它有点脏,但很管用。

其他回答

要避免出现问题,请尝试intval($var)。一些示例:

<?php
echo intval(42);                      // 42
echo intval(4.2);                     // 4
echo intval('42');                    // 42
echo intval('+42');                   // 42
echo intval('-42');                   // -42
echo intval(042);                     // 34 (octal as starts with zero)
echo intval('042');                   // 42
echo intval(1e10);                    // 1410065408
echo intval('1e10');                  // 1
echo intval(0x1A);                    // 26 (hex as starts with 0x)
echo intval(42000000);                // 42000000
echo intval(420000000000000000000);   // 0
echo intval('420000000000000000000'); // 2147483647
echo intval(42, 8);                   // 42
echo intval('42', 8);                 // 34
echo intval(array());                 // 0
echo intval(array('foo', 'bar'));     // 1
?>

我发现在JavaScript中,将字符串转换为数字的简单方法是将其乘以1。它解决了连接问题,因为“+”符号在JavaScript中有多种用途,而“*”符号纯粹用于数学乘法。

基于我在这里看到的关于PHP自动愿意将包含字符串的数字解释为数字(以及关于加法的注释,因为在PHP中,“+”纯粹是用于数学加法)的内容,这种乘法技巧也适用于PHP。

我已经测试过了,它确实有效。。。尽管取决于获取字符串的方式,您可能需要在乘以1之前对其应用trim()函数。

仅将数字乘以1,以便将字符串转换为类型number。

//String value
$string = "5.1"
if(is_numeric($string)){
  $numeric_string = $string*1;
}

PHP将在限制范围内为您提供

<?php
   $str = "3.148";
   $num = $str;

   printf("%f\n", $num);
?>

在某些情况下,只需注意一些有用且安全的答案。您可能需要先检查字符串是否包含有效的数值,然后才能将其转换为数值类型(例如,如果您必须处理来自将int转换为字符串的数据库的数据)。可以使用is_numeric(),然后使用floatval():

$a = "whatever"; // any variable

if (is_numeric($a)) 
    var_dump(floatval($a)); // type is float
else 
    var_dump($a); // any type