在 symfony 中使用 HighCharts 绘制带循环的图表

Draw charts with a Loop using HighCharts in symfony

我目前在 symfony 中使用 Highcharts。当我像这样输入静态数据 (array1/array2/array3/array4) 时效果很好:

$ob1 = new Highchart();
$ob1->chart->renderTo('barchart');
$ob1->title->text('Chart 1');
$ob1->xAxis->categories($arrayResult);
$ob1->plotOptions->pie(array(
    'allowPointSelect'  => true,
    'cursor'    => 'pointer',
    'dataLabels'    => array('enabled' => false),
    'showInLegend'  => true
));

$ob1->series(array(array('type' => 'column','name' => 'bar1', 'data' => $array1),
                    (array('type' => 'column','name' => 'bar2', 'data' => $array2)),
                    (array('type' => 'column','name' => 'bar3', 'data' => $array3)),
                    (array('type' => 'column','name' => 'bar4', 'data' => $array4))


    ));

但我需要的是在一个循环中输入数据,因为我有不规则数量的数组。我试过了,但出现错误 "unexpected 'while' (T_WHILE)" 有什么我遗漏的吗?

这是我使用 while 添加图表数据系列的代码:

      $i=1;
      $number=4;

    $ob1->series(array( 
        (   
         $myarray = array();
         while($i <= $number): array_push($myarray, array(0 => 'value', 1=> $i));
          $i++;
          array('type' => 'column','name' => 'bar'.$i, 'data' => $myarray)
          endwhile;
        ),

));

我也试过了,只显示 while 的最后一次迭代

     $i=1;
     $number=4;
     $myarray = array();

 while($i <= $number): 
     array_push($myarray, array(0 => 'value', 1=> $i));
     $i++;
     $ob1->series(array (array('type' => 'column','name' => 'bar'.$i, 'data' => $myarray)));
 endwhile;

您的 php 语句无效,语法无效。为避免此类错误,切勿在函数参数内创建循环。简化语法并使用时间变量,易于阅读和理解你在做什么,记住,每个优秀的开发人员总是说:"divide and conquer" :)

$i = 1;
$number = 4;

$chartData = [];
while ($i <= $number) {
    $chartData[] = [
        'type' => 'column',
        'name' => 'bar'.$i,
        'data' => [
            'value',
            $i,
        ],
    ];
    $i++;
}
$ob1->series($chartData);