2015-05-04 74 views
2

我有这样的代码在我的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] 

我该如何继续?

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

回答

1

喜欢这个?

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

var_dump($result); 
+0

表示最好的解决办法,即使TGA答案是好的。我有另一个问题给你:如果我的数组中的值是日期(日期时间)我怎么能在我的foreach循环这里'$ result [] =(int)$ value'?非常感谢你的回答。 –

+1

@french_dev DateTime返回一个对象,我不认为你可以将它转换为int,而应该获取单个值(如年,月或日等等,就像这样'$ datetimeObj-> format(' d')')并使用它 – xurshid29

+0

这就是我认为的日期时间。的确,datetime返回对象。谢谢你的回答,今天你是我的英雄。快乐的编码。 –

1

您可以使用像array_walk函数这样的小提示将您的值转换为浮点数以防止出现高图表问题。见这方面的文档功能: 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

+0

我怎么才能真正开始'array_walk'?我也试过'array_values',但是当我继续对包含array_values attr的变量进行回声时,我有这个消息错误'注意:数组到字符串转换' –

+0

我已经添加了一个完整的例子,我认为你不需要需要array_values – TGA

+0

感谢您的回复。你的解脱是一个很好的选择,我尝试了她,它运作良好。我只是选择xurshid29答案来重构我的代码。非常感谢你指导我解决这个难题。 –