У меня проблема в том, что я не могу получить массив в массив.
Результат должен выглядеть так:
$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
)
);
Если бы кто-то мог мне помочь, это было бы здорово.
1) .=
это означает присваивание с конкатенацией строк. Вы должны вставить массив в родительский массив
2) внутри дочернего массива есть два значения, а не одна строка, поэтому используйте ,
между двумя значениями не конкатенация строк ","
$chartdata[] .= array($row["date"]. ", " . $row["total"]);
в
$chartdata[] = array($row["date"], $row["total"]);
У вас есть лишняя точка здесь:
# ⇓
$chartdata[] .= array($row["date"]. ", " . $row["total"]);
Чтобы вставить новый элемент в массив, нужно использовать $array[] = $item
:
$chartdata[] = array($row["date"]. ", " . $row["total"]);
Точка используется для объединения строк. Надеюсь, поможет.
Удалить точку.
<?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
)
);