我从我的数据库中获取一个浮点数数组,但我得到的数组已经将值转换为字符串。
我如何在不遍历数组的情况下将它们再次转换为浮点数?
或者,如何从数据库中获取值而不将其转换为字符串?
编辑:
- 我使用的是Zend框架,我使用的是PDO_mysql。这些值每列存储一个,这是一个要求,所以我不能序列化它们。
array_map('floatval', $array)
只适用于一维数组。- 我不能
floatval
的单一元素,当我使用它们,因为我必须传递一个数组到我的flash图表。 - 暂时的非通用解决方案是提取行并对每行执行
array_map('floatval',$array)
。
5条答案
按热度按时间goucqfw61#
你可以用
字符串
有一个选项
PDO::ATTR_STRINGIFY_FETCHES
,但据我所知,MySQL总是将其设置为true
编辑:参见Bug 44341,确认MySQL不支持关闭stringify。
编辑:你也可以像这样Map一个自定义函数:
型
pprl5pva2#
您如何获取数据?mysql、mysqli或PDO,其他方式或甚至其他数据库?
你可以像这样使用
array_map
和floatval
:$data = array_map('floatval', $data);
,但它仍然执行一个循环,我认为它假设你的数据中只有一列。如果必须的话,你最好在使用你的值时转换为float。php很可能在正确解释它方面做得很好。
g2ieeal73#
哈哈……你是在和我做同一个项目吗?
我刚刚(昨晚)完成了一个基于ZF的项目,它使用pdo_mysql来检索和格式化数据,然后将其输出为xml以供在flash中使用。这些值是以字符串的形式输入的,但需要是浮点数。因为我也是编写获取数据的部分和创建数据库的人,所以我只是确保数据在进入数据库之前转换为浮点数。
我只是将值转换为浮点数,作为其他格式的一部分,这是值得的。
字符串
cczfrluj4#
我找到了一个简单的方法来做这个手术.您只需在代码中添加foreach循环即可实现此目的。foreach循环用于逐个获取数组字符串数据。然后,您可以通过函数number_format简单地转换它。转换为浮点值后,我使用了2位。即,它用于打印点值2位置之后的值。
字符串
utugiqy65#
不知道你在问什么?您可以使用
(float) $string
将字符串转换为浮点型,但由于PHP是动态类型的,因此在需要时,无论如何都会发生这种情况。没有理由进行显式强制转换。你用浮点值做什么?