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

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

当前回答

要避免出现问题,请尝试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
?>

其他回答

要避免出现问题,请尝试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
?>

在任何(松散类型)语言中,您都可以通过在数字上加一个零来将字符串转换为数字。

然而,这没有什么意义,因为PHP将在使用此变量时自动执行,并且在输出时无论如何都将转换为字符串。

请注意,您可能希望将虚线保留为字符串,因为在强制转换为浮点数后,由于浮点数的性质,它可能会发生不可预测的变化。

function convert_to_number($number) {
    return is_numeric($number) ? ($number + 0) : FALSE;
}

是的,PHP中有一个类似的方法,但它鲜为人知,所以你很少听说它。它是一个叫做“身份”的算术运算符,如下所述:

算术运算符

要将数字字符串转换为数字,请执行以下操作:

$a = +$a;

有一种方法:

$value = json_decode(json_encode($value, JSON_NUMERIC_CHECK|JSON_PRESERVE_ZERO_FRACTION|JSON_UNESCAPED_SLASHES), true);

使用is_*不起作用,因为变量是:string。

使用json_encode()和json_edecode()的组合将其转换为“真”形式。如果它是真字符串,则输出错误。

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

var_dump($num, $int, $float);

将输出:string(2)“Me”int(0)float(0)