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

如何在PHP中将数组的所有值转换为浮点值?,php,Php,我正在从数据库中获取一个浮点数组,但我得到的数组已将值转换为字符串 如何将它们再次转换为浮点数而不在数组中循环? 或者,如何从数据库中获取值而不将其转换为字符串 编辑: 我使用的是Zend框架,我使用的是PDO_mysql。每个列存储一个值,这是一个要求,因此我无法序列化它们 array\u map('floatval',$array)仅适用于一维数组 当我使用单个元素时,我不能floatval,因为我必须将数组传递给我的flash图表 瞬时的非通用解决方案是提取行,并对每行执行arr

我正在从数据库中获取一个浮点数组,但我得到的数组已将值转换为字符串

如何将它们再次转换为浮点数而不在数组中循环?
或者,如何从数据库中获取值而不将其转换为字符串


编辑:
  • 我使用的是Zend框架,我使用的是PDO_mysql。每个列存储一个值,这是一个要求,因此我无法序列化它们

  • array\u map('floatval',$array)
    仅适用于一维数组

  • 当我使用单个元素时,我不能
    floatval
    ,因为我必须将数组传递给我的flash图表

  • 瞬时的非通用解决方案是提取行,并对每行执行
    array\u map('floatval',$array)

    • 您可以使用

      $floats = array_map('floatval', $nonFloats);
      
      有一个选项
      PDO::ATTR\u STRINGIFY\u FETCHES
      ,但据我所知,MySQL总是将其设置为
      true

      编辑:查看哪个确认MySQL不支持关闭stringify

      编辑:您还可以映射如下自定义函数:

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

      您是如何获取数据的?mysql、mysqli或PDO、其他方式或其他数据库

      您可以将
      array\u map
      floatval
      一起使用,如下所示:
      $data=array\u map('floatval',$data)
      但这仍然执行一个循环,我认为它假设数据中只有一列


      如果有必要的话,当你运用你的价值时,你可能是最好的选择。无论如何,php很可能会很好地解释它。

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


      你用浮点值做什么?

      LOL。。。你在做我叫塔尔坤的同一个项目吗

      我(昨晚)刚刚在一个基于ZF的项目中创建了一个东西,它使用pdo_mysql来检索和格式化数据,然后将其输出为xml,以便在flash中使用。这些值是作为字符串输入的,但必须是浮点数。 因为我也是编写获取数据的部分和创建数据库的部分的人,所以我只是确保数据在进入数据库之前转换为float

      我只是简单地将这些值转换为float,作为其他格式的一部分

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

      我找到了一个简单的手术方法。 您可以通过向代码中添加foreach循环来实现这一点。foreach循环用于逐个获取数组字符串数据。然后,您可以简单地通过函数号\格式来转换它。我在转换为浮点值后使用了2个位置。i、 它用于打印点值后的值2处

      
       
      
         $example= array("12.20", "15.05", "55.70");
          foreach($example as $float) 
      {
       $update_value = number_format($float,2);
       echo $update_value."<br>";
      }
      
      
      
      $example=数组(“12.20”、“15.05”、“55.70”);
      foreach($float示例)
      {
      $update\u value=数字\u格式($float,2);
      echo$update_值。“
      ”; }
      我知道我可以转换单个值。但是我有一个字符串的多数组,它需要是一个浮动的多数组,如果我将数组传递给打开flash chart,则不会进行转换。我用浮点值画闪光雷达图。RoBorg发布的解决方案非常好!:)有趣的证据。我不能这样做,我的值已经作为FOAT存储在数据库中,但是当我检索它们时,我会得到字符串。因此,在我将它们发送到flash之前,我必须再次将它们转换为浮动。现在它工作得很好。你知道为什么浮点数作为字符串返回吗?我知道simplexml之类的东西会返回字符串。。。您是如何获得数据的?正如RoBorg所说:编辑:参见Bug 44341,它确认MySQL不支持关闭stringify。