【发布时间】:2020-03-02 17:43:47
【问题描述】:
我需要生成烛台图并需要转换此表
amount created_at updated_at
258 2019-10-17 01:45:17 2019-10-17 01:45:17
186 2019-10-17 01:45:17 2019-10-17 01:45:17
122 2019-10-17 01:46:31 2019-10-17 01:46:31
092 2019-10-17 01:46:31 2019-10-17 01:46:31
086 2019-10-17 01:47:47 2019-10-17 01:47:47
172 2019-10-17 01:47:47 2019-10-17 01:47:47
到下面的json对象
[
{ time: '2019-10-17 01:45:17', open: 180, high: 180, low: 178, close: 179 },
{ time: '2019-10-17 01:46:17', open: 180, high: 181, low: 177, close: 178 },
{ time: '2019-10-17 01:47:17', open: 175, high: 179, low: 175, close: 178 },
]
我正在使用 PHP 编写代码,我不介意拥有可以做同样事情的 PHP 代码。 请注意,每次都是从表中的第一条记录开始,以 5 分钟为间隔。
编辑:
生成的json值包括time,从updated_at列得到,open是从区间的数量得到的第一个数据,high是区间的最高数量,low这是间隔的最低金额,最后是close,这是间隔的最后一个数据。
在只有一个数据的情况下,应作为开盘价、收盘价、最高价和最低价。
此插图的所有 json 值都是任意数字。
我尝试在 PHP 中使用 strtotime() 将每个时间戳转换为 unix 时间戳,然后我循环遍历这些值,然后如果满足如下所示的条件,则将其推送到数组中。
$tnow = 0;
$time = 60;
$interval = 0;
$y = [];
$z = [];
$array = [];
foreach ($db as $key => $value) {
if($key == 0){
$tnow = strtotime($value['updated_at']);
}
if(strtotime($value['updated_at']) <= $tnow){
array_push($z, $value['amount']);
}
else{
$array = sort($z);
$cc = count($z)-1;
array_push($z, $z[0]);
array_push($z, $array[$cc]);
array_push($z, $array[0]);
array_push($z, $z[$cc]);
array_push($y, $z);
$z = [];
$tnow = ($tnow+60);
continue;
}
}
如果我能用 JavaScript 更好地实现这一点,我一点也不介意。
【问题讨论】:
-
到目前为止你做了什么?
-
json对象中总结了什么,怎么总结的?
-
最近大部分数据库引擎都支持在单元格中存储 json 对象并围绕它进行查询
-
什么是数量和数量?你试过什么?你如何从给定的数据中得到想要的结果?为什么结果中有分钟而不是五分钟?数据只是一种产品吗?为什么 id、userid、orderid 很重要?
-
很难看出您是如何从该数据集中得出该结果的,并且您断言“每次都在从表中的第一条记录开始的 5 分钟间隔内”是不正确的。
标签: javascript php mysql sql json