协慌网

登录 贡献 社区

如何在 PHP 中将字符串转换为数字?

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

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

答案

通常不需要这样做,因为在大多数情况下,PHP 都会为您强制类型。对于那些你想显式转换型的情况下, 它:

$num = "3.14";
$int = (int)$num;
$float = (float)$num;

有几种方法可以这样做:

  1. 将字符串转换为数字原始数据类型:

    $num = (int) "10";
    $num = (double) "10.12"; // same as (float) "10.12";
  2. 对字符串执行数学运算:

    $num = "10" + 1;
    $num = floor("10.1");
  3. 使用intval()floatval()

    $num = intval("10");
    $num = floatval("10.1");
  4. 使用settype()

为了避免出现问题,请尝试使用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
?>