2016-11-18 69 views
0

嘗試正確呈現Highcharts列範圍表時出現問題。我有所有必要的數據存儲在PHP變量中。問題是我傳遞這個變量時無法獲得表格。 如果我嘗試傳遞直接的數字數據,那麼表格會被渲染,所以問題出現在data字段中。Highcharts列範圍 - 如何呈現存儲在PHP變量中的系列數據?

這裏是我的代碼:

<?php 
if (!isset($divId)) { 
    $mt = microtime(); 
    $mt = explode(" ", $mt); 
    $divId = "stacked_container_" . floor($mt[0] * 100000) . "_" . $mt[1]; 
} 
?> 
<div id="<?php echo $divId; ?>" class="col-mx-12"></div> 

<?php 
$title = $elements['title']; 
$resources = $elements['series']['resources']; 
$values = $elements['series']['values']; 

$resourcesSeries = ''; 
$valuesMinSeries = ''; 
$valuesMaxSeries = ''; 
foreach ($resources as $key => $resource) { 
    $resourcesSeries .= '"' . $resource . '",'; 
    $valuesMinSeries .= $values[$key][0] . ','; 
    $valuesMaxSeries .= $values[$key][1] . ','; 
} 

$globalNav = $view['nav']; 

// Transforming strings into array type 
$valuesMin = str_split($valuesMinSeries); 
$valuesMax = str_split($valuesMaxSeries); 

$globalNav->addScriptJS(" 
     $(document).ready(function() { 
      $('#" . $divId . "').highcharts({ 
     chart: { 
      type: 'columnrange' 
     }, 
     title: { 
      text: '" . $title . "' 
     }, 
     xAxis: { 
      categories: [" . $resourcesSeries . "] 
     }, 
     yAxis: { 
      title: { 
       text: 'range' 
      } 
     }, 
     series: [{ 
      data: [ 
        [<?php echo $valuesMin[0]?> , <?php echo $valuesMax[0]?> ] 
        ] 
      }] 
     }); 

    }); 
    "); 

?> 

在這個例子中,我想僅顯示$valuesMin$valuesMax第一要素。 最終目標是渲染所有數據,所以我也需要實現foreach

回答

0

我找到了解決問題的辦法。這就是:

//The result will be in the $data variable 
    $data = ''; 
    foreach ($resources as $key => $resource) { 
    $resourcesSeries .= '"' . $resource . '",'; 
    $valuesMinSeries .= $values[$key][0] . ','; 
    $valuesMaxSeries .= $values[$key][1] . ','; 
    $data .= "[".values[$key][0]. "," .$values[$key][1]. "],"; 
    } 

而在series領域:

series: [{ 
     data: [ " .$data. " ] 
     }] 

希望這將幫助!

0

你似乎是複製你的resources陣列,通過調用它既是你的$resources變量,你$values變量:

$resources = $elements['series']['resources']; 
$values = $elements['series']['resources']; 

,我將承擔起應該是這樣的:

$resources = $elements['series']['resources']; 
$values = $elements['series']['values']; 
+0

是的,就像你說的。我編輯了這篇文章。 – Dygne