2016-02-03 4 views
2

Я пытаюсь настроить библиотеку php-диаграмм в своем коде с некоторыми данными, полученными из базы данных. Я слишком близко, но я думаю, что меня путают со всеми этими массивами. Я постараюсь объяснить как можно проще. Соответствующая форма построения данных, что моя библиотека должна прочитать для того, чтобы создать PHP график выглядит следующим образом:Настройка 2d php-массива

//With this value my api displays the chart normally 
$p->data = array(array(array("2015/10/10",44),array("2015/10/11",56))); 

путь я пытаюсь построить вышеупомянутый массив состоит в следующем

//Fetch results from database and push values into an array 
while($row = mysqli_fetch_array($result)){ 
    $values[] = array($row['Date'] => $row['Total']); 
} 
$p->data = array(array($values)); 

Но, к сожалению, график не отображает мои значения. Как я могу исправить мой код, чтобы для того чтобы достигнуть этого формата:

$p->data = array(array(array("2015/10/10",44),array("2015/10/11",56))); 

ответ

1

Вы вставляете $row['Date'] как ключ и $row['Total'] как значение, которое, если вы бежите print_r($p->data) результаты в этом:

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [0] => Array 
         (
          [2015/10/10] => 44 
         ) 
        [1] => Array 
         (
          [2015/10/11] => 56 
         ) 
       ) 
     ) 
) 

Вы на самом деле нужно

while($row = mysqli_fetch_array($result)){ 
    $values[] = array($row['Date'], $row['Total']); 
} 

Таким образом, вы получите этот массив:

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [0] => Array 
         (
          [0] => 2015/10/10 
          [1] => 44 
         ) 
        [1] => Array 
         (
          [0] => 2015/10/11 
          [1] => 56 
         ) 
       ) 
     ) 
) 

Точно, что вам нужно

1

Если массив должен быть таким же, как и в первом примере кода, вам не нужно =>. Таким образом, вы можете просто сделать следующее:

while($row = mysqli_fetch_array($result)){ 
    $values[] = array($row['Date'], $row['Total']); 
} 

=> создает ключ значение пару с первым элементом в качестве ключа, а вторым в качестве значения. Если вы используете ,, он создает плоский массив с этими элементами в качестве значений.

+0

большое спасибо всем! – Labrosb

0

Вы оборачивать слишком много массивов:

$p->data = array(array(array("2015/10/10",44),array("2015/10/11",56))); 
      ^-A ^-B ^-C0     ^-C1 

, а затем

$values[] = array($row['Date'] => $row['Total']); 
       ^-C0,C1,C2,etc... 
     ^--B 
} 
$p->data = array(array($values)); 
        ^--A 
       ^---???? 
Смежные вопросы