我想将这些类型的值“3”、“2.34”、“0.234343”等转换为数字。在JavaScript中,我们可以使用Number(),但在PHP中有没有类似的方法?
Input Output
'2' 2
'2.34' 2.34
'0.3454545' 0.3454545
我想将这些类型的值“3”、“2.34”、“0.234343”等转换为数字。在JavaScript中,我们可以使用Number(),但在PHP中有没有类似的方法?
Input Output
'2' 2
'2.34' 2.34
'0.3454545' 0.3454545
当前回答
我一直在阅读答案,没有看到任何人提到PHP数字转换中最大的警告。
最受欢迎的答案是:
$str = "3.14"
$intstr = (int)$str // now it's a number equal to 3
太棒了。PHP进行直接铸造。但如果我们做了以下操作呢?
$str = "3.14is_trash"
$intstr = (int)$str
PHP认为这种转换有效吗?
显然是的。
PHP读取字符串,直到找到所需类型的第一个非数字字符。这意味着对于整数,数字字符是[0-9]。因此,它读取3,因为它在[0-9]字符范围内,所以它继续读取。读取。并在那里停止,因为它不在[0-9]范围内。
同样的情况也会发生,如果你被投到浮动或双倍。PHP将读取3。,然后是1,然后是4,并将在i处停止,因为它不是有效的浮点数字字符。
因此,“million”>=1000000计算结果为假,但“10000000000”>=10000计算结果为真。
另请参见:
https://www.php.net/manual/en/language.operators.comparison.php比较时如何进行转换
https://www.php.net/manual/en/language.types.string.php#language.types.string.conversion字符串如何转换为各自的数字
其他回答
是的,PHP中有一个类似的方法,但它鲜为人知,所以你很少听说它。它是一个叫做“身份”的算术运算符,如下所述:
算术运算符
要将数字字符串转换为数字,请执行以下操作:
$a = +$a;
您可以使用:
((int) $var) ( but in big number it return 2147483647 :-) )
但最好的解决方案是使用:
if (is_numeric($var))
$var = (isset($var)) ? $var : 0;
else
$var = 0;
Or
if (is_numeric($var))
$var = (trim($var) == '') ? 0 : $var;
else
$var = 0;
在任何(松散类型)语言中,您都可以通过在数字上加一个零来将字符串转换为数字。
然而,这没有什么意义,因为PHP将在使用此变量时自动执行,并且在输出时无论如何都将转换为字符串。
请注意,您可能希望将虚线保留为字符串,因为在强制转换为浮点数后,由于浮点数的性质,它可能会发生不可预测的变化。
实现这一目标的多种方式之一是:
$fileDownloadCount = (int) column_data_from_db;
$fileDownloadCount++;
第二行将值递增1。
如果您希望为$value=“0.4”获取浮点值,但为$value=“4”获取int值,则可以编写:
$number = ($value == (int) $value) ? (int) $value : (float) $value;
它有点脏,但很管用。