正确呈现数值的数组,而不是带字符串的数组

时间:2015-05-04 14:22:20

标签: php arrays symfony highcharts

我的symfony控制器中有这个代码:

        $em=$this->getDoctrine()->getManager();

        $queryIndex = $em->createQuery( 'SELECT g.index
                                        FROM MySpaceMyBundle:Graphique g');

        $result = $queryIndex->getArrayResult();
        $arrayResult = array_map('current', $result);

        var_dump($arrayResult);

        return $this->render('MySpaceMyBundle:MyFolder:myTemplate.html.twig');

使用我的var_dump,我得到了这个结果:

array (size=10)
  0 => string '1700.000' (length=8)
  1 => string '1200.000' (length=8)
  2 => string '1200.000' (length=8)
  3 => string '1304.000' (length=8)
  4 => string '1800.000' (length=8)
  5 => string '2012.000' (length=8)
  6 => string '2048.000' (length=8)
  7 => string '1048.000' (length=8)
  8 => string '3000.000' (length=8)
  9 => string '5421.000' (length=8)

但对于obHighchartBundle(使用highchart.js),我想要的结果是:

[1700,1200,1200,1304,1800,2012,2048,1048,3000,5421]

我该怎么办?

请注意,我需要传递一个数值数组(值是我数据库中的十进制类型),而不是带字符串的数组。

2 个答案:

答案 0 :(得分:1)

您可以使用像array_walk函数这样的小提示将值转换为float,以防止出现高级问题。请参阅此功能的文档: http://php.net/manual/fr/function.array-walk.php

这里是一个微小功能的例子:

<?php
function forceFloat (&$aItems) { 
   $aItems = (float) $aItems; 
}

$arrayResult = array("1.00","4.55","39494");

var_dump($arrayResult);

array_walk($arrayResult, 'forceFloat');

var_dump($arrayResult);

?>

输出:

array(3) {
  [0]=>
  string(4) "1.00"
  [1]=>
  string(4) "4.55"
  [2]=>
  string(5) "39494"
}
array(3) {
  [0]=>
  float(1)
  [1]=>
  float(4.55)
  [2]=>
  float(39494)
}

最诚挚的问候,

TGA

答案 1 :(得分:1)

喜欢这个吗?

$result = [];
foreach ($arrayResult as $value) {
    $result[] = (int) $value
}

var_dump($result);