2017-05-10 1 views
1

J'utilise actuellement des graphiques dans symfony. Il fonctionne bien quand j'entre les données statiques (array1/array2/array3/array4) comme celui-ci:Dessiner des graphiques avec une boucle en utilisant HighCharts dans symfony

$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)) 


    )); 

mais ce que je besoin est d'entrer des données dans une boucle parce que j'ai un nombre irrégulier de tableaux. J'ai essayé mais j'ai eu une erreur "inattendu" (T_WHILE) "Y at-il quelque chose que j'ai manqué ici?

Voici mon code en utilisant tout d'ajouter une série de données de graphique:

 $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; 
     ), 

)); 

J'ai aussi essayé ceci et affiche uniquement la dernière itération du tout

 $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; 

Répondre

2

Votre déclaration php est pas valide, a une syntaxe invalide. Pour éviter ce type d'erreur, ne créez jamais de boucle dans l'argument de la fonction. Simplifiez votre syntaxe et utiliser des variables temporelles, est facile à lire et à comprendre ce que vous faites, rappelez-vous, tout bon développeur disent toujours: « diviser pour mieux régner » :)

$i = 1; 
$number = 4; 

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

Merci beaucoup :) @rafrsr) – User

+0

De rien :), notez la réponse en votant et marquez comme accepté, c'est apprécié! – rafrsr

+0

Pouvez-vous m'aider s'il vous plaît si vous avez une idée et merci d'avance :)) @rafrsr https://stackoverflow.com/questions/44066259/symfony-offline-installation-with-composer – User