我想将这些类型的值“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
当前回答
有几种方法可以做到这一点:
将字符串强制转换为数字基元数据类型:$num=(int)“10”;$num=(double)“10.12”;//与(浮动)“10.12”相同;对字符串执行数学运算:$num=“10”+1;$num=地板(“10.1”);使用intval()或floatval():$num=intval(“10”);$num=浮动值(“10.1”);使用settype()。
其他回答
有几种方法可以做到这一点:
将字符串强制转换为数字基元数据类型:$num=(int)“10”;$num=(double)“10.12”;//与(浮动)“10.12”相同;对字符串执行数学运算:$num=“10”+1;$num=地板(“10.1”);使用intval()或floatval():$num=intval(“10”);$num=浮动值(“10.1”);使用settype()。
我发现在JavaScript中,将字符串转换为数字的简单方法是将其乘以1。它解决了连接问题,因为“+”符号在JavaScript中有多种用途,而“*”符号纯粹用于数学乘法。
基于我在这里看到的关于PHP自动愿意将包含字符串的数字解释为数字(以及关于加法的注释,因为在PHP中,“+”纯粹是用于数学加法)的内容,这种乘法技巧也适用于PHP。
我已经测试过了,它确实有效。。。尽管取决于获取字符串的方式,您可能需要在乘以1之前对其应用trim()函数。
$a = "10";
$b = (int)$a;
您可以使用它在PHP中将字符串转换为int。
这是实现您所需功能的函数。首先,我们检查该值是否可以理解为数字,如果可以,我们将其转换为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;
}
}
如果你想要一个字符串的数值,但因为不确定而不想将其转换为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