2017-08-09 93 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更多的逻辑,但这可能会导致重复的属性。