我想将这些类型的值“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
$data = ["1","2","3","4","5"];
echo json_encode($data, JSON_NUMERIC_CHECK);
?>
其他回答
现在我们正处于一个严格/强类型在PHP中具有更大重要性的时代,我使用json_decode:
$num = json_decode('123');
var_dump($num); // outputs int(123)
$num = json_decode('123.45');
var_dump($num); // outputs float(123.45)
所有建议都会丢失数字类型。
在我看来,这是一个最佳实践:
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";
}
您通常不需要这样做,因为在大多数情况下,PHP会强制您使用类型。对于确实要显式转换类型的情况,请将其强制转换为:
$num = "3.14";
$int = (int)$num;
$float = (float)$num;
如果你想要一个字符串的数值,但因为不确定而不想将其转换为float/int,这个技巧会将其转换成正确的类型:
function get_numeric($val) {
if (is_numeric($val)) {
return $val + 0;
}
return 0;
}
Example:
<?php
get_numeric('3'); // int(3)
get_numeric('1.2'); // float(1.2)
get_numeric('3.0'); // float(3)
?>
资料来源:https://www.php.net/manual/en/function.is-numeric.php#107326
在PHP中,您可以使用intval(string)或floatval(字符串)函数将字符串转换为数字。