2017-08-09 114 views
-3

我想用莫里斯面積圖動態地
從我的sql查詢我得到以下結果分貝結果PHP數組

period | item | amount 
------ | ---- | ------ 
20170801 | iphone | 327 
20170801 | ipad | 278 
20170801 | ipod | 125 
20170802 | iphone | 528 
20170802 | ipad | 325 
20170802 | ipod | 250 

現在我需要這些信息存儲在像數組這

data: [{ 
     period: '20170801', 
     iphone: 327, 
     ipad: 278, 
     ipod: 125 
    }, { 
     period: '20170802', 
     iphone: 528, 
     ipad: 325, 
     itouch: 250 
    }, ...] 

我正在使用while循環通過表每個日期它需要創建一個新的對象。對於對象中的日期,它需要向該對象添加一個元素。

我絕對不知道如何做到這一點

+0

你可以在你的DB數組中使用[json_encode](http://php.net/manual/en/function.json-encode.php) – xander

+0

我認爲這是一個javascript問題,因爲你在談論morris圖表,請說明你如何在js上處理這些數據。 – perodriguezl

回答

-1
<?php 

class test { 
    private $period = ''; 
    private $item = ''; 
    private $amount = ''; 

    public function __construct($period, $item, $amount) { 
     $this->period = $period; 
     $this->item = $item; 
     $this->amount = $amount; 
    } 
} 

$obj = [ 
    new test('20170801', 'iphone', '327'), 
    new test('20180801', 'iphone2', '328') 
]; 

var_dump($obj); 

但最有用的使用ORM,你會得到數據後 - 通過PHP函數「json_encode」

http://php.net/manual/en/function.json-encode.php

它序列化到字符串http://php.net/manual/en/function.json-decode.php

+0

我不認爲這是做它需要做的事情,看看我的表和我的數組 –

+0

你沒有數組,因爲 - (array是一個「[]」),但是這個引號「{}」表示你有一個數組對象 –

+0

如果你有數組,你需要使用「json_encode」 –

-1

好吧,因爲你不知道如何開始我編寫了一個小腳本讓你開始:

$db = new mysqli('localhost', 'root', '', 'db'); 
$result = $db->query('SELECT * FROM table'); 
$data = $result->fetch_all(MYSQLI_ASSOC); 
$json = json_encode($data, JSON_PRETTY_PRINT); 
print_r($json); 

您必須在SQL查詢中更改數據庫服務器數據和表名,否則應該只輸出JSON格式的整個表數據。如果你想加入同一日期的所有數據,你必須添加soem更多的邏輯,但這可能會導致重複的屬性。