PHP:将字符串转换为浮点(仅当字符串表示浮点时)
我有一个未知的字符串,可以像一个浮动。在这种情况下,我希望将其转换为float进行计算,否则将其保留为字符串 如何检测字符串是否表示浮点数 自动将后者转换为1.2,但这不是我想要的。您可以使用函数检查可能包含数字的变量。 例如:PHP:将字符串转换为浮点(仅当字符串表示浮点时),php,string,type-conversion,Php,String,Type Conversion,我有一个未知的字符串,可以像一个浮动。在这种情况下,我希望将其转换为float进行计算,否则将其保留为字符串 如何检测字符串是否表示浮点数 自动将后者转换为1.2,但这不是我想要的。您可以使用函数检查可能包含数字的变量。 例如: $a = "1.23"; if (is_numeric($a)) { $a = (float)$a; } $b = "1.2 to 1.3"; if (is_numeric($b)) { $b = (float)$b; } var_dump([
$a = "1.23";
if (is_numeric($a)) {
$a = (float)$a;
}
$b = "1.2 to 1.3";
if (is_numeric($b)) {
$b = (float)$b;
}
var_dump([
'a' => $a,
'b' => $b
]);
输出
数组大小=2'a'=>浮点1.23'b'=>字符串“1.2到1.3”
长度=10
可以使用函数检查可能包含数字的变量。
例如:
$a = "1.23";
if (is_numeric($a)) {
$a = (float)$a;
}
$b = "1.2 to 1.3";
if (is_numeric($b)) {
$b = (float)$b;
}
var_dump([
'a' => $a,
'b' => $b
]);
输出
数组大小=2'a'=>浮点1.23'b'=>字符串“1.2到1.3”
长度=10
也许您想使用: float floatval mixed$var-获取字符串的浮点值 文档中的示例: $string='122.34343The'; $float=floatval$string; echo$float;//122.34343
也许您想使用: float floatval mixed$var-获取字符串的浮点值 文档中的示例: $string='122.34343The'; $float=floatval$string; echo$float;//122.34343
您可以使用以下方法检查字符串是否为浮点:
$a = "1.23";
$isFloat = ($a == (string)(float)$a);
您可以使用以下方法检查字符串是否为浮点:
$a = "1.23";
$isFloat = ($a == (string)(float)$a);
因为它还没有被提及
if(preg_match('/^\d+\.\d+$/', $string)){
$float = (float)$string;
}
我认为is_numeric是一个更好的选择,但这也适用
上面的内容只匹配浮动,所以它们必须有小数点。要使该选项成为可选选项,请改为使用/^\d+\.\d+?$/
^字符串开头
\d+一个或多个数字
\.点,字面意思
\d+一个或多个数字
$字符串结尾
对于第二个/^\d+\.\d+?$/除此之外,与上述内容相同:
...? 可选的捕获组,匹配此组0或1次。
现在应该很明显的是,十进制是可选的
干杯 因为它还没有被提及
if(preg_match('/^\d+\.\d+$/', $string)){
$float = (float)$string;
}
我认为is_numeric是一个更好的选择,但这也适用
上面的内容只匹配浮动,所以它们必须有小数点。要使该选项成为可选选项,请改为使用/^\d+\.\d+?$/
^字符串开头
\d+一个或多个数字
\.点,字面意思
\d+一个或多个数字
$字符串结尾
对于第二个/^\d+\.\d+?$/除此之外,与上述内容相同:
...? 可选的捕获组,匹配此组0或1次。
现在应该很明显的是,十进制是可选的
干杯 一个怎么样?一个怎么样?我不明白这是怎么回事。floatval$string==$string似乎总是真的。通常,如果不是数字和浮点值,它只返回一个浮点0,但通过重新阅读您的帖子,我意识到$b=1.2到1.3也将返回1.2。我不知道这是如何工作的。floatval$string==$string似乎总是正确的。通常它只返回一个浮点0,如果它不是数字和浮点值,但通过重新阅读您的帖子,我意识到$b=1.2到1.3也将返回1.2,实际上与@Maxim的答案相同,只是很好地包装在一个函数中。实际上与@Maxim的答案相同,只是很好地包装在函数中。