увеличение переменной php в цикле javascript - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь создать отображение диаграмм с использованием chartJS, которые являются динамическими как по количеству отображаемых диаграмм, так и по их содержимому. Я застрял в том, как перебрать набор результатов в PHP при циклическом создании диаграмм в JavaScript. Я знаю, что Javascript обрабатывается на стороне клиента, а php - на стороне сервера. Я написал этот код, чтобы дать вам общее представление о том, что я пытаюсь сделать. Прямо сейчас счетчик не увеличивается, и я получаю те же графики, независимо от того, какие данные идут первыми в массиве. В некотором смысле мне нужен какой-то способ отслеживания var i в javascript в php для доступа к содержимому в моем наборе результатов.

var charts = [];
    <?php $counter = 0; ?>

    for (var i = 0; i < <?php echo sizeOf($readingArray); ?>; i++) {
        var ctx = document.getElementById(i);
        charts[i] = new Chart(ctx, {
        type: 'line',
        data: {
            datasets: [{
            label: 'Actual Readings',
            data: <?php echo json_encode($readingArray[$counter][4], JSON_NUMERIC_CHECK); ?>,
        }, {
            label: 'Threshold',
            data: <?php echo json_encode($readingArray[$counter][5], JSON_NUMERIC_CHECK); ?>,
        }],
        labels: <?php echo json_encode($readingArray[$counter][3]);?>,

        },
        options: {
                zoom: {
                        enabled: true,
                        mode: 'x',
                },
                pan: {
                       enabled: true,
                       mode: 'x',
                },

        },
    });
    <?php $counter++; ?>
  }

1 Ответ

0 голосов
/ 16 мая 2019

Вы должны назначить переменные php переменным js и работать с ними. Как то так

var data = '<?php echo json_encode($readingArray); ?>';

Затем преобразуйте строку json в объект

arrayOfObjects = JSON.parse(data)

После этого повторите ваши данные и распечатайте диаграмму

for (var key in arrayOfObjects) {
console.log(arrayOfObjects[key])
}
...