Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert my PHP array to a Javascript array in laravel 4

in my controller i have an array which i have populated from my database and stored which looks like this and is called dataset2

    array(2) {
      ["April"]=> int(92)
      ["May"]=>  int(86)
    }

In my view i can dd{{}} on the array and see this is the structure.

Now I want to convert it into a javascript array so i can use flot to make it into a graph.

my Javascript within my view looks like this

 <script language="javascript" type="text/javascript">
    $(function () {

        var data1 = [
            ["April", 13],
            ["May", 20],
         ];

   var data2 = [<?php echo json_encode($dataset2 );?>];

   $.plot("#placeholder", [{
       data: data1,
       label: "NewBeach"
   }, {
       data: data2,
       label: "Sandhills"
   }], {
       series: {
           lines: { show: true },
           points: {
              show: true,
              barWidth: 0.1,
              align: "center"
           }
       },
       xaxis: {
           mode: "categories"
       },
        yaxis: {
       },
       grid: { 
           hoverable: true, 
           clickable: true 
       }
   });
});
</script>

Am i missing something when converting it?, as it doesnt draw anything with the JSON_encode array but does with the hard coded one. From what i have read it seems as though thats all i need. Is it because of the values within my array?

Kind regards Mike

like image 444
Mike Avatar asked May 14 '14 13:05

Mike


2 Answers

you have already done it: var data2 = ; just remove the brackets [ ]

also assign key to your array e.g. array('key'=>'value')

$array = array(label=>value, name=>value);

var data2 = <?php echo json_encode($dataset2 );?>;
like image 110
Fury Avatar answered Sep 27 '22 22:09

Fury


As an alternative to the other answers - you could consider using a package for this. Jeffrey Way from Laracasts made this package laracasts/PHP-Vars-To-Js-Transformer

JavaScript::put('data2', $dataset2);
like image 20
Laurence Avatar answered Sep 27 '22 22:09

Laurence