我想将这些类型的值“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字符串如何转换为各自的数字
其他回答
您只需将0添加到字符串中,即可将其转换为数字,而不会丢失初始原始值。举个例子:
dd('0.3454545' + 0)
PHP将为您处理转换,或者按照已经建议在字符串前添加+。
您可以使用:
(int)(your value);
或者您可以使用:
intval(string)
您不必选择是将字符串转换为int还是float,只需在其中添加一个0,PHP就会自动将结果转换为数字类型。
// Being sure the string is actually a number
if (is_numeric($string))
$number = $string + 0;
else // Let the number be 0 if the string is not a number
$number = 0;
在某些情况下,只需注意一些有用且安全的答案。您可能需要先检查字符串是否包含有效的数值,然后才能将其转换为数值类型(例如,如果您必须处理来自将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
我发现在JavaScript中,将字符串转换为数字的简单方法是将其乘以1。它解决了连接问题,因为“+”符号在JavaScript中有多种用途,而“*”符号纯粹用于数学乘法。
基于我在这里看到的关于PHP自动愿意将包含字符串的数字解释为数字(以及关于加法的注释,因为在PHP中,“+”纯粹是用于数学加法)的内容,这种乘法技巧也适用于PHP。
我已经测试过了,它确实有效。。。尽管取决于获取字符串的方式,您可能需要在乘以1之前对其应用trim()函数。