Reputation: 169
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
Upvotes: 5
Views: 6721
Reputation: 4776
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 );?>;
Upvotes: 7
Reputation: 60038
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);
Upvotes: 5
Reputation: 5847
Your php array
is an associative array
, and that will be converted into a javascript object
:
array(2) {
["April"]=> int(92)
["May"]=> int(86)
}
// Will be:
{
"April": 92,
"May": 86
}
// When you `json_encode` it.
If you wish it to look like your data1
javascript array, it will have to look something like this in php:
$array = Array(
Array("April", 92),
Array("May", 86)
);
In the above array, you put the objects in as arrays instead, which will produce an array with arrays (multi dimensional array) for javascript after json_encode
.
Upvotes: 2