Cómo incluir PHP en Javascript; API de Google Chart

Estoy trabajando con la API de visualización de gráficos de google.

Tengo una variable en php:

`$value` 

que contiene lo siguiente: [‘0’, 0, 0], [‘1’, 65, 35], [‘2’, 88, 35], [‘3’, 66, 35], [‘4’, 35, 35], [‘5’, 99, 100]

Quiero utilizar este $value continuación en data.addRows siguiente manera, sin embargo, el resultado que recibo está en blanco

   google.load("visualization", "1", {packages:["corechart"]}); google.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Period'); data.addColumn('number', 'Sales'); data.addColumn('number', 'Expenses'); data.addRows([  ]); var options = { width: 400, height: 240, title: 'Company Performance' }; var chart = new google.visualization.LineChart(document.getElementById('chart_div')); chart.draw(data, options); }  

Después de algunas investigaciones, parece que es Ajax lo que trato de intentar. ¿Es esto correcto? ¿Hay alguna manera simple de devolver el valor $value a data.addRow ?

Aquí está el proceso al que se establece $ value:

 $i = "0"; $period = "0"; $chartrow = array(); $unitpriceNumR = 3 while ($i<3) { $chartrow[$i] = "['".$period."',".$sPrice[$i].", ".$uPrice[$i]."]"; $period++; $i++; } switch ($currentStage) { case "0": $value = $chartrow[0]; break; case "1": $value = $chartrow[0]; break; case "2": $value = $chartrow[0].",".$chartrow[1]; break; } 

En este ejemplo, si $currentStage = “2”, entonces $value está establecido en [‘0’, 0, 0], [‘1’, 65, 35]

Ok, incluso intenté copiar y pegar el código de Google en mi archivo y aún no tuve éxito al ver un gráfico. (código tomado de: http: //code.google.com/intl/en-EN/apis/chart/interactive/docs/gallery/linechart.html)

   google.load("visualization", "1", {packages:["corechart"]}); google.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Year'); data.addColumn('number', 'Sales'); data.addColumn('number', 'Expenses'); data.addRows([ ['2004', 1000, 400], ['2005', 1170, 460], ['2006', 860, 580], ['2007', 1030, 540] ]); var options = { width: 400, height: 240, title: 'Company Performance' }; var chart = new google.visualization.LineChart(document.getElementById('chart_div')); chart.draw(data, options); }  

Usando este código

 $chartrow = array(); for ($i = 0; $i < 3; $i++ ) { $chartrow[] = array((string) $i, $sPrice[$i], $uPrice[$i]); echo $chartrow; } 

resultados en $ chartrow mostrando la palabra “Array” en la pantalla.

Por favor, eche un vistazo a la función de encoding JSON proporcionada con PHP. Esto le permitirá hacer echo o print una cadena codificada JSON que JavaScript transforma en un objeto nativo.

 $value = array( array('0', 0, 0), array('1', 65, 35), array('2', 88, 35), ... ); ... data.addColumn('number', 'Sales'); data.addColumn('number', 'Expenses'); // Change this and the following lines to: data.addRows(< ?php print json_encode($value); ?>); 

EDITAR

 $i = 0; $chartrow = array(); $unitpriceNumR = 3 for (; $i < 3; $i++ ) $chartrow[] = array((string) $i, $sPrice[$i], $uPrice[$i]); switch ($currentStage) { case "0": case "1": $value = $chartrow[0]; break; case "2": $value = array_slice($chartrow, 0, 2); default: // You should have some default value, seriously!!! } // Then go the json_encode way, it's safer and easier to maintain! ... data.addColumn('number', 'Sales'); data.addColumn('number', 'Expenses'); // Change this and the following lines to: data.addRows(); 

Cambiar [< ?php echo $value ?>] < ?php echo json_encode($value) ?>

echo $value produce Array(5) porque PHP no sabe de forma nativa cómo representar una matriz como una cadena.

echo json_encode($value) produce:

[['0',0, 0],['1',65,35],['2',66,35],['4',35,35],['5',99, 100]]

entonces no necesitas corchetes alrededor del < ?php ... ?> .

http://php.net/manual/en/function.json-encode.php

EDITAR: gracias por aclarar cómo se forman las variables PHP.

El problema es que está convirtiendo manualmente matrices en cadenas, cuando debería dejar que $json_encode haga todo el trabajo por usted.

Versión revisada del código PHP:

 $chartrow = array(); $unitpriceNumR = 3; for ($i=0; $i< =2; $i++) $chart_row[$i] = array($i, $sPrice[$i], $uPrice[$i]; switch ($currentStage) { case '0': case '1': $value = $chartrow[0]; break; case '2': $value = array($chartrow[0], $chartrow[1]); break; } 

EDIT2: Intenté lo que hiciste (reemplazando el bloque php con lo que esperamos que produzca el bloque php) y tampoco funcionó para mí. Firebug dice 'El contenedor no está definido' en el código de Google.

Olvidaste agregar un div a tu documento. Agregue

después de la script .

Así que estamos en la misma página: http://jsfiddle.net/daemon/nnpeE/

Aquí está la respuesta a este problema PHP: ¿Cómo pasar múltiples variables a una matriz?

Cada vez que tengo valores así hago esto como mi primer script en la página y parece funcionar para mí. También me permite inspeccionar qué está pasando con el PHP en lugar de que la variable esté oculta en alguna función. Tenga en cuenta que esto creará una variable global que podría no ser la que usted desea.

  

EDITAR:
Tengo tu código PHP para que funcione para mí. Los cambios que hice fueron convertir $i a solo 0 no a "0" Lo mismo aplica para la statement de cambio. También la línea 4 necesita un punto y coma después. Entonces pongo esto

  

Y el resultado en la página era