javascript - PHP、JSON数组到javascript数组的多重覆盖
问题描述
很久没有在这里提问了,因为我的问题的大部分答案已经可以找到了。
但是今天我需要帮助
我正在使用这些数据数组:
array (
'_metadata' =>
array (
'from' => '2018-11-30T16:00:00+00:00',
'to' => '2018-12-08T11:05:40+00:00',
'granularity' => 'DAY',
'aggregation' => 'SUM',
),
'metrics' =>
array (
'DOWN_PUBLIC' =>
array (
'unit' => 'B',
'values' =>
array (
0 =>
array (
'value' => 23501281,
'timestamp' => '2018-12-02T16:05:00+00:00',
),
1 =>
array (
'value' => 221147881,
'timestamp' => '2018-12-03T16:05:00+00:00',
),
2 =>
array (
'value' => 104525623,
'timestamp' => '2018-12-04T16:05:00+00:00',
),
3 =>
array (
'value' => 163306933,
'timestamp' => '2018-12-05T16:05:00+00:00',
),
4 =>
array (
'value' => 159806208,
'timestamp' => '2018-12-06T16:05:00+00:00',
),
5 =>
array (
'value' => 122203658,
'timestamp' => '2018-12-07T16:05:00+00:00',
),
),
),
'UP_PUBLIC' =>
array (
'unit' => 'B',
'values' =>
array (
0 =>
array (
'value' => 111801,
'timestamp' => '2018-12-02T16:05:00+00:00',
),
1 =>
array (
'value' => 5594252,
'timestamp' => '2018-12-03T16:05:00+00:00',
),
2 =>
array (
'value' => 11654085,
'timestamp' => '2018-12-04T16:05:00+00:00',
),
3 =>
array (
'value' => 10870143,
'timestamp' => '2018-12-05T16:05:00+00:00',
),
4 =>
array (
'value' => 9288760,
'timestamp' => '2018-12-06T16:05:00+00:00',
),
5 =>
array (
'value' => 9288262,
'timestamp' => '2018-12-07T16:05:00+00:00',
),
),
),
),
)
我需要将时间戳转换为日期(即 12 月 3 日)并将值(字节)转换为兆字节,然后将其作为数组传递给 javascript,因此输出将类似于:
$dateConverted = ['3 Dec', '4 Dec', '5 Dec', '6 Dec', '7 Dec'];
$megabytesDown = [23.50, 221.15, 104.53, ...];
$megabytesUp = [0.11, 5.59, 11.65, ...];
使用下面的 Dexter 的答案,稍微清理一下让它工作得很好
function custDateFormat($date){
return date('d M', strtotime($date));
}
function bytes_to_mb($bytes, $decimal_places = 1 ){
return number_format($bytes / 1048576, $decimal_places);
}
$bigArray = json_decode($Dataresponse);
$dateConverted = [];
$megabytesDown = [];
$megabytesUp = [];
$upVal = $bigArray->metrics->UP_PUBLIC->values;
$downVal = $bigArray->metrics->DOWN_PUBLIC->values;
foreach($bigArray->metrics->UP_PUBLIC->values as $key => $val)
{
$dateConverted[] = custDateFormat($val->timestamp);
$megabytesDown[] = bytes_to_mb($downVal[$key]->value);
$downTotal+= bytes_to_mb($downVal[$key]->value);
$megabytesUp[] = bytes_to_mb($upVal->value);
$upTotal+= bytes_to_mb($upVal->value);
}
将结果传递给 Chart.js,结果:
解决方案
function custDateFormat($date){
return date('d M', strtotime($date));
}
function convertToReadableSize($size){
$base = log($size) / log(1024);
return round(pow(1024, $base - floor($base)), 1);
}
$dateConverted = [];
$megabytesDown = [];
$megabytesUp = [];
$upVal = $bigArray['UP_PUBLIC']['values'];
$downVal = $bigArray['DOWN_PUBLIC']['values'];
foreach($bigArray['UP_PUBLIC']['values'] as $key => $val)
{
$dateConverted[] = custDateFormat($val['timestamp']);
$megabytesDown[] = convertToReadableSize($downVal[$key]['value']);
$megabytesUp[] = convertToReadableSize($val['value']);
}
推荐阅读
- regex - 正则表达式扫描失败
- php - 在使用ajax 调用追加数据时,只返回jquery 和php 中数据库的第一行?
- python - 使用 BeautifulSoup 查找名为 data-stats 的属性
- python - 字符串切片和空字符串结果
- jquery - 向上滚动时的粘性标题,但补偿初始绝对定位
- python - virtualenv 是用于运行时环境还是开发环境?Virtualenv 与容器
- java - 在android中添加两个MutableList
- python - 导航到没有用户名的文件
- functional-programming - 如何编写更清晰的函数式代码?
- entity-framework-6 - EF 6.0 如何取消删除和修改属性?