我想将这些类型的值“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
当前回答
如果您希望为$value=“0.4”获取浮点值,但为$value=“4”获取int值,则可以编写:
$number = ($value == (int) $value) ? (int) $value : (float) $value;
它有点脏,但很管用。
其他回答
您通常不需要这样做,因为在大多数情况下,PHP会强制您使用类型。对于确实要显式转换类型的情况,请将其强制转换为:
$num = "3.14";
$int = (int)$num;
$float = (float)$num;
PHP将在限制范围内为您提供
<?php
$str = "3.148";
$num = $str;
printf("%f\n", $num);
?>
简单地说,你可以这样写:
<?php
$data = ["1","2","3","4","5"];
echo json_encode($data, JSON_NUMERIC_CHECK);
?>
这是实现您所需功能的函数。首先,我们检查该值是否可以理解为数字,如果可以,我们将其转换为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;
}
}
有一种方法:
$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)