如何在PHP中将数组的所有值转换为浮点数?

idfiyjo8  于 2023-08-02  发布在  PHP
关注(0)|答案(5)|浏览(125)

我从我的数据库中获取一个浮点数数组,但我得到的数组已经将值转换为字符串。
我如何在不遍历数组的情况下将它们再次转换为浮点数?
或者,如何从数据库中获取值而不将其转换为字符串?

编辑:

  • 我使用的是Zend框架,我使用的是PDO_mysql。这些值每列存储一个,这是一个要求,所以我不能序列化它们。
  • array_map('floatval', $array)只适用于一维数组。
  • 我不能floatval的单一元素,当我使用它们,因为我必须传递一个数组到我的flash图表。
  • 暂时的非通用解决方案是提取行并对每行执行array_map('floatval',$array)
goucqfw6

goucqfw61#

你可以用

$floats = array_map('floatval', $nonFloats);

字符串
有一个选项PDO::ATTR_STRINGIFY_FETCHES,但据我所知,MySQL总是将其设置为true
编辑:参见Bug 44341,确认MySQL不支持关闭stringify。
编辑:你也可以像这样Map一个自定义函数:

function toFloats($array)
{
    return array_map('floatval', $array);
}

$data = array_map('toFloats', $my2DArray);

pprl5pva

pprl5pva2#

您如何获取数据?mysql、mysqli或PDO,其他方式或甚至其他数据库?
你可以像这样使用array_mapfloatval$data = array_map('floatval', $data);,但它仍然执行一个循环,我认为它假设你的数据中只有一列。
如果必须的话,你最好在使用你的值时转换为float。php很可能在正确解释它方面做得很好。

g2ieeal7

g2ieeal73#

哈哈……你是在和我做同一个项目吗?
我刚刚(昨晚)完成了一个基于ZF的项目,它使用pdo_mysql来检索和格式化数据,然后将其输出为xml以供在flash中使用。这些值是以字符串的形式输入的,但需要是浮点数。因为我也是编写获取数据的部分和创建数据库的人,所以我只是确保数据在进入数据库之前转换为浮点数。
我只是将值转换为浮点数,作为其他格式的一部分,这是值得的。

protected function _c2f($input)
    {
        $input = (float)$input;
        $output = round(($input * 1.8) + 32, 2);

        return $output;
    }

字符串

cczfrluj

cczfrluj4#

我找到了一个简单的方法来做这个手术.您只需在代码中添加foreach循环即可实现此目的。foreach循环用于逐个获取数组字符串数据。然后,您可以通过函数number_format简单地转换它。转换为浮点值后,我使用了2位。即,它用于打印点值2位置之后的值。

$example = array("12.20", "15.05", "55.70");
foreach ($example as $float) {
    $update_value = number_format($float, 2);
    echo $update_value . "<br>";
}

字符串

utugiqy6

utugiqy65#

不知道你在问什么?您可以使用(float) $string将字符串转换为浮点型,但由于PHP是动态类型的,因此在需要时,无论如何都会发生这种情况。没有理由进行显式强制转换。
你用浮点值做什么?

相关问题