我想将这些类型的值“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
当前回答
实现这一目标的多种方式之一是:
$fileDownloadCount = (int) column_data_from_db;
$fileDownloadCount++;
第二行将值递增1。
其他回答
在PHP中,您可以使用intval(string)或floatval(字符串)函数将字符串转换为数字。
$a = "10";
$b = (int)$a;
您可以使用它在PHP中将字符串转换为int。
我一直在阅读答案,没有看到任何人提到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字符串如何转换为各自的数字
你总是可以加零!
Input Output
'2' + 0 2 (int)
'2.34' + 0 2.34 (float)
'0.3454545' + 0 0.3454545 (float)
这是实现您所需功能的函数。首先,我们检查该值是否可以理解为数字,如果可以,我们将其转换为int和float。如果int和float相同(例如,5==5.0),则返回int值。如果int和float不相同(例如,5!=5.3),那么我们假设您需要float的精度并返回该值。如果值不是数字,我们将抛出警告并返回null。
function toNumber($val) {
if (is_numeric($val)) {
$int = (int)$val;
$float = (float)$val;
$val = ($int == $float) ? $int : $float;
return $val;
} else {
trigger_error("Cannot cast $val to a number", E_USER_WARNING);
return null;
}
}