0

我想使用 PHP 数组中的变量生成带有 Google 注释的时间线图,但总是出现“未定义变量”错误。

<?php

$years = array(1991, 1992, 1993, 1994);
$graphs = array(20, 30, 40, 50);

echo<<<_END

<!DOCTYPE HTML>
<html>
<head>
<script type='text/javascript' src='http://www.google.com/jsapi'>
</script>
<script type='text/javascript'>

      google.load('visualization', '1', {'packages':['annotatedtimeline']});

      google.setOnLoadCallback(drawChart);

      function drawChart() {

        var data = new google.visualization.DataTable();

        data.addColumn('date', 'Date');

        data.addColumn('number', 'Data');   

        data.addRows([

    <?php

    for ($i=0; $i<=3; $i++){

    echo "[new Date(" . $years[$i] . ", 1, 1), " . $graphs[$i] . "],";

    /* output 

    [new Date(1991, 1, 1), 20],

    [new Date(1992, 1, 1), 30],

    etc..

    */

    }

    ?>    

        ]);

        var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div1'));

        chart.draw(data, {displayAnnotations: true});

      }

</script> 
</head>
<body>

<div id='chart_div1' style='width: 700px; height: 240px;'>
</div>

</body>

</html>
_END;

?>
4

1 回答 1

0

你为什么要在你的heredoc中做一个php循环?只需关闭您的 php 代码并让 html 代码单独解析 -

<?php

$years = array(1991, 1992, 1993, 1994);
$graphs = array(20, 30, 40, 50);

?>

<!DOCTYPE HTML>
<html>
<head>
<script type='text/javascript' src='http://www.google.com/jsapi'>
</script>
<script type='text/javascript'>

      google.load('visualization', '1', {'packages':['annotatedtimeline']});

      google.setOnLoadCallback(drawChart);

      function drawChart() {

        var data = new google.visualization.DataTable();

        data.addColumn('date', 'Date');

        data.addColumn('number', 'Data');   

        data.addRows([

    <?php

    for ($i=0; $i<=3; $i++){

    echo "[new Date(" . $years[$i] . ", 1, 1), " . $graphs[$i] . "],";

    /* output 

    [new Date(1991, 1, 1), 20],

    [new Date(1992, 1, 1), 30],

    etc..

    */

    }

    ?>    

        ]);

        var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div1'));

        chart.draw(data, {displayAnnotations: true});

      }

</script> 
</head>
<body>

<div id='chart_div1' style='width: 700px; height: 240px;'>
</div>

</body>

</html>

这样做代码运行良好 - 请参阅http://phpfiddle.org/main/code/fki-b1i

于 2013-05-25T00:47:27.077 回答