使用 CanvasJS 图表在 js 中循环


Loop in js with CanvasJS chart

我有这段代码(JS + PHP)

        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
        { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }

所有行都相等,除了最后一行,这没有","

我需要循环这段代码,但 for 循环不起作用,我尝试了这个,但不起作用:

for(var j = 0; j <= 20; j++)
    { x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> },
{ x: new Date(2012, 1, 1, <?php echo $i - 1; ?>), y: <?php echo $invertir[$i]; $i++; ?> }

知道吗?谢谢

正如评论中所说,尝试手动强制创建带有数据的数组是一种糟糕的方法。因为你使用MySQL,所以你可以尝试这样的事情:

// Creamos una array vacía
$myDataPoints = array();
// Usa la siguiente variable $conexion...
$conexion = mysqli_connect("tuIP","tuUser","tuPassword","tuDB");
// o adapta la siguiente línea con la variable previamente creada por ti
$rawData = mysqli_query($conexion, "SELECT * FROM tablaConDatos");
// Ejecutamos el Loop para cada línea de resultados de la consulta 
while($row = mysqli_fetch_array($rawData))
{
/* Calculamos la fecha. En tu ejemplo, parece que sólo quieres variar la hora
sustrayendo 1 hora a cada número de línea. Este método sólo funciona si tu
tabla de datos tiene menos de 25 líneas */
$fecha = date(DATE_ATOM, mktime($row - 1, 0, 0, 1, 1, 2012));
// Creamos el objeto... 
$point = array("x" => $fecha , "y" => $row['invertir']);
// ... y lo mandamos al array 
array_push($myDataPoints, $point);
echo 'var myDataPoints = '.json_encode($myDataPoints).';';
}

此方法会生成一个 JSON 数组 (myDataPoints),您可以在普通的 canvasjs 调用中轻松使用它:

var chart = new CanvasJS.Chart("chartContainer", {
                    data: [
                        {
                            dataPoints: myDataPoints
                        }
                    ]
                });