2015-05-04 75 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答案來重構我的代碼。非常感謝你指導我解決這個難題。 –