Reputation: 139
I'm quite new to php and don't actually know if this is possible
Im currently outputting JSON code with php using the following code
echo json_encode($output, JSON_NUMERIC_CHECK);
But what I want to do is have the above data inside a variable.
I tried
$JSONDATAX = json_encode($output, JSON_NUMERIC_CHECK);
But it doesn't seem to like it when I call $JSONDATAX.
The original echo way works completely fine.
edit ........
$lrs = CDB::ExecuteQuery($sql);
if($lrs) {
$jsonData = convert($lrs);
}
function convert($lrs) {
$intermediate = array();
while ($vals = CDB::GetAssoc($lrs)) {
$key = $vals['POS'];
$x = $vals['CODE'];
$y = $vals['COUNT'];
$intermediate[$key][] = array('x' => $x, 'y' => $y);
}
$output = array();
foreach($intermediate as $key => $values) {
$output[] = array(
"key" => $key,
'values' => $values
);
}
$data1 = json_encode($output, JSON_NUMERIC_CHECK);
}
?>
<script>
var negative_test_data = <?php echo $data1; ?>;
var chart;
nv.addGraph(function() {
chart = nv.models.multiBarChart()
.color(d3.scale.category10().range())
.rotateLabels(0) //Angle to rotate x-axis labels.
.transitionDuration(300)
.showControls(true) //Allow user to switch between 'Grouped' and 'Stacked' mode.
.groupSpacing(0.24) //Distance between each group of bars.
;
As you can see, I am using php just after var negative_test_data , but it doesn't produce anything.
Upvotes: 0
Views: 128
Reputation: 1054
In your edited example, $data is a local variable inside the convert function, so it cannot be accessed outside that function. the result of json_encode should be returned:
$data1 = json_encode($output, JSON_NUMERIC_CHECK);
should be
return json_encode($output, JSON_NUMERIC_CHECK);
Then, the result of the convert function can be echoed:
var negative_test_data = <?php echo $data1; ?>;
should be
var negative_test_data = <?php echo convert($lrs); ?>;
(There should probably be a an additional if around that whole part, depending on what you want to happen when $lrs does not evaluate to true)
Upvotes: 1
Reputation: 360572
This should be all you really need:
$phpvar = json_encode($output);
echo "<script>var negative_test_data = {$phpvar};</script>";
Upvotes: 0