我在用Symfony YAML component。如果我从数据库输出数据,数字会以字符串的形式出现,所以我使用filter_var将它们转换为适当的类型(整型或浮点型)。
但是,输出浮点数是整数,如7.0,输出的是!!float 7。在PHP中,7.0可以很好地解析为浮点数,它只在输出时更改它。
示例代码:
<?php
require 'vendor/autoload.php';
use Symfony\Component\Yaml\Yaml;
$yaml = 'test: { PHP: 7.0, MySQL: 5.5 }';
echo Yaml::dump(Yaml::parse($yaml));输出:
test:
PHP: !!float 7
MySQL: 5.5但我想:
test:
PHP: 7.0
MySQL: 5.5有没有办法做到这一点?在选项中看不到任何内容。
发布于 2019-05-09 22:00:13
不,没有办法影响浮点值的转储方式。来自Yaml组件的相应代码如下所示:
if (\is_float($value)) {
$repr = (string) $value;
if (is_infinite($value)) {
$repr = str_ireplace('INF', '.Inf', $repr);
} elseif (floor($value) == $value && $repr == $value) {
// Preserve float data type since storing a whole number will result in integer value.
$repr = '!!float '.$repr;
}
} else {
$repr = \is_string($value) ? "'$value'" : (string) $value;
}https://stackoverflow.com/questions/56059044
复制相似问题