我想将这些类型的值“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
当前回答
这是实现您所需功能的函数。首先,我们检查该值是否可以理解为数字,如果可以,我们将其转换为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;
}
}
其他回答
您不必选择是将字符串转换为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;
PHP将在限制范围内为您提供
<?php
$str = "3.148";
$num = $str;
printf("%f\n", $num);
?>
如果您希望为$value=“0.4”获取浮点值,但为$value=“4”获取int值,则可以编写:
$number = ($value == (int) $value) ? (int) $value : (float) $value;
它有点脏,但很管用。
在一次编程面试中,我遇到了这样一个问题:“假设你正在编写一个内置函数,用PHP将整数转换为字符串,你会如何编写该函数”。这里有一个解决方案。
$nums = ["0","1","2","3","4","5","6","7","8","9"];
$int = 15939;
$string = "";
while ($int) {
$string .= $nums[$int % 10];
$int = (int)($int / 10);
}
$result = strrev($string);
所有建议都会丢失数字类型。
在我看来,这是一个最佳实践:
function str2num($s){
// Returns a num or FALSE
$return_value = !is_numeric($s) ? false : (intval($s)==floatval($s)) ? intval($s) :floatval($s);
print "\nret=$return_value type=".gettype($return_value)."\n";
}