循环遍历PHP数组并在Javascript代码中显示值

时间:2015-09-08 21:43:08

标签: javascript php arrays

我有一个数组chart.js,想要使用该数组的值创建一个html5图表。为此,我使用$chart = ' <script> var data = { labels: ['."$array[0]".', '."$array[1]".', "..."], datasets: [ { label: "My Chart", fillColor: "rgba(220,220,220,0.5)", strokeColor: "rgba(220,220,220,0.8)", highlightFill: "rgba(220,220,220,0.75)", highlightStroke: "rgba(220,220,220,1)", data: [65, 59, 80, 81, 56, 55, 40] } ] }; </script>'; print_r($chart);

我使用的代码看起来像这样(不幸的是,我需要通过PHP输出Javascript):

labels: ['.for ($i = 0, $i < count($array), $i++) {echo "$array[$i].','"}.'];

到目前为止工作正常,但数组会不时更新,图表也应如此。我想我会需要一个循环来做到这一点,但我不太确定如何在Javascript代码中运行循环。这不起作用:

position:absolute

3 个答案:

答案 0 :(得分:0)

这不是一个完整的解决方案,但它可以帮助你。

使用PHP的模板功能让您的生活更轻松:

currentTime

答案 1 :(得分:0)

创建一个函数以返回打印的数组。实际上在你的代码中你可以删除回声。

请注意,这是一个快速黑客,不应该使用。你应该使用一些模板功能

function displayMe($ar){
     $res = '';
     for ($i = 0, $i < count($array)-1, $i++){
         $res .= '"'.$array[i].'",';
     }
     return $res . '"'.$array[count($array)-1] . '"';
}

$chart = '
<script>
var data = {
    labels: ['. displayMe($array).'],
    datasets: [
        {
            label: "My Chart",
            fillColor: "rgba(220,220,220,0.5)",
            strokeColor: "rgba(220,220,220,0.8)",
            highlightFill: "rgba(220,220,220,0.75)",
            highlightStroke: "rgba(220,220,220,1)",
            data: [65, 59, 80, 81, 56, 55, 40]
        }
    ]
};
</script>';
print_r($chart);

答案 2 :(得分:0)

这应该可行,但我现在无法检查出来。 而不是&#34;展开&#34;您自己可以尝试这样的阵列:

$chart = '
<script>
var data = {
    labels: '.json_encode($array).',
    datasets: [
        {
            label: "My Chart",
            fillColor: "rgba(220,220,220,0.5)",
            strokeColor: "rgba(220,220,220,0.8)",
            highlightFill: "rgba(220,220,220,0.75)",
            highlightStroke: "rgba(220,220,220,1)",
            data: [65, 59, 80, 81, 56, 55, 40]
        }
    ]
};
</script>';
echo $chart;

基本上json_encode将php数组编码为javascript对象,正如你所需要的那样!

此外,不需要print_r(递归打印),只需使用echo(或print