相同值在不同情况下的不同输出-数组


different output of same value in different situations - array

我不明白为什么这些数组给我不同的输出:

•这个值1/4来自一个表(db)

id | value
...
2  | 1/4
3  | 1/7
echo $matrix[0][2]; //show 1/4

•但如果我做了= 1/4

echo $matrix[0][2] = 1/4 // show 0.25

出现在所有分数值中。例如,1/7在第一个示例中显示1/7,但在第二个示例中显示0.142857142

我的问题是为什么?我想要的始终是十进制值,但第一个代码,如我所说,是不与小数工作。

谢谢

在第一个示例中,您正在从数据库检索字符串值。在第二个示例中,您正在计算一个数学表达式。

你最好这样做:

$t = explode("/", $matrix[0][2]);
echo ($t[0] / $t[1]);

来自数据库的值是字符串,您自己设置的值是float

如果你正在使用MySQL,你可以使用mysql_fetch_field来知道字段类型,这在你使用MyISAM (MySQL总是返回字符串)时很有用。

你有一个简单/丑陋的解决方案:

$var = '1/4';
echo (float)eval('return '.$var.';');

另一个解决方案:

$var = '1/4';
$tmp = explode('/', $var, 2);
$tmp = $tmp[0]/$tmp[1];
echo $tmp;

但我认为最好的解决方案是将结果保存在数据库中(例如0.25),并在获得结果时将结果转换为float

第一个示例值中的Cos是字符串类型,第二个示例值是计算数学函数的答案是浮点类型。

如果你使用这种结构"echo $a = '1/4';"输出将是相同的。