Php 表示数字(尤其是整数)的字符串的格式问题

Php 表示数字(尤其是整数)的字符串的格式问题,php,casting,formatting,Php,Casting,Formatting,这是一个相当简单的问题,但我看不到一个简单而直接的解决方案 我有表示数值的值,但它们是字符串。示例:0.0、1.0、10.0、1.1。 大多数情况下,它们表示整数,但也可以有分数 我想将这些数字显示为0,1,10,1.1 我想到了这些直截了当的解决方案,但它们不考虑偶尔的分数: $val = (int) val; --OR-- $val = sprintf('%d', $val); 显然会有很长的解决方案,即在格式化之前测试数字是否为整数,但我正在寻找一种尽可能简单的方法。您可以尝试以下方法:

这是一个相当简单的问题,但我看不到一个简单而直接的解决方案

我有表示数值的值,但它们是字符串。示例:
0.0、1.0、10.0、1.1
。 大多数情况下,它们表示整数,但也可以有分数

我想将这些数字显示为
0,1,10,1.1

我想到了这些直截了当的解决方案,但它们不考虑偶尔的分数:

$val = (int) val;
--OR--
$val = sprintf('%d', $val);
显然会有很长的解决方案,即在格式化之前测试数字是否为整数,但我正在寻找一种尽可能简单的方法。

您可以尝试以下方法:

$val = preg_match("/\.0$/", $number_string) ? (int)$number_string : (float)$number_string;
它在原始字符串上使用正则表达式匹配
.0
结尾,如果存在匹配项,则键入将字符串值强制转换为整数,否则将值强制转换为浮点。

使用以下简单技巧:

echo 0.0 + 0;
echo 1.0 + 0;
echo 10.0 + 0;
echo 1.1 + 0;
这相当于铸造浮动

(float)$num


谢谢,我更喜欢解决方案
(float)$val
floatval($num)