Создать массив из данных Mysql для Flot

У меня проблема в том, что я не могу получить массив в массив.

Результат должен выглядеть так:

$data=array(
array(
'label' => 'Totals',
'color' => '#745fa4',
'data' =>
array(
array('01/01/2015', 125),
array('02/01/2015', 148),
array('03/01/2015', 42),
array('04/01/2015', 115),
array('05/01/2015', 45),
array('06/01/2015', 77),
array('07/01/2015', 59)
)
),
);

В настоящее время у меня есть это, но я не могу получить его в правильном формате:

$result = mysqli_query($con,"SELECT * FROM table ORDER BY id DESC LIMIT 28");

$chartdata = array();
while($row = $result->fetch_assoc()) {
$chartdata[] .= array($row["date"]. ", " . $row["total"]);
}

$data=array(
array(
'label' => 'Totals',
'color' => '#745fa4',
'data' => $chartdata
)
);

Если бы кто-то мог мне помочь, это было бы здорово.

0

Решение

1) .= это означает присваивание с конкатенацией строк. Вы должны вставить массив в родительский массив

2) внутри дочернего массива есть два значения, а не одна строка, поэтому используйте , между двумя значениями не конкатенация строк ","

$chartdata[] .= array($row["date"]. ", " . $row["total"]);

в

$chartdata[] = array($row["date"],  $row["total"]);
1

Другие решения

У вас есть лишняя точка здесь:

#            ⇓
$chartdata[] .= array($row["date"]. ", " . $row["total"]);

Чтобы вставить новый элемент в массив, нужно использовать $array[] = $item:

$chartdata[] = array($row["date"]. ", " . $row["total"]);

Точка используется для объединения строк. Надеюсь, поможет.

1

Удалить точку.

<?php
$result = mysqli_query($con,"SELECT * FROM table ORDER BY id DESC LIMIT 28");

$chartdata = array();
while($row = $result->fetch_assoc()) {
$chartdata[] = array($row["date"],  $row["total"]); // Remove the dot
}

$data=array(
array(
'label' => 'Totals',
'color' => '#745fa4',
'data' => $chartdata
)
);
0