PHP中从JSON数据提取最早、最晚时间价格并计算差价百分比
从PHP数组中获取最早/最晚时间的价格并计算百分比差值
嘿,我来帮你搞定这个需求!要实现这个功能,咱们可以分几步来:
1. 按时间对数组进行排序
首先,咱们需要把你的数组按照time字段排序,这样最早的记录会排在数组开头,最晚的在末尾。PHP里可以用usort()函数配合自定义的排序规则来实现:
// 假设你的原始数组是 $priceData usort($priceData, function($a, $b) { // 将时间字符串转成时间戳进行比较 $timeA = strtotime($a['time']); $timeB = strtotime($b['time']); return $timeA - $timeB; // 升序排列,最早的在前 });
2. 获取最早和最晚时间对应的价格
排序完成后,咱们就能轻松拿到最早和最晚的记录了:
// 获取最早(最旧)的记录及价格 $oldestRecord = reset($priceData); $oldPrice = (float)$oldestRecord['price']; // 获取最晚(最新)的记录及价格 $newestRecord = end($priceData); $newPrice = (float)$newestRecord['price'];
这里把字符串类型的price转成了浮点数,方便后续计算。
3. 计算价格的百分比差值
用这个公式就能算出百分比变化:
百分比差值 = ((最新价格 - 旧价格) / 旧价格) * 100
对应的PHP代码(还处理了除数为0的异常情况):
if ($oldPrice == 0) { echo "旧价格不能为0,无法计算百分比差值"; } else { $percentageChange = (($newPrice - $oldPrice) / $oldPrice) * 100; // 保留两位小数让结果更美观 $percentageChange = number_format($percentageChange, 2); echo "价格百分比变化:{$percentageChange}%"; }
完整示例代码
把上面的步骤整合起来,完整代码如下:
// 模拟你的原始数组数据 $priceData = [ ['id' => '1201', 'coins_id' => '22', 'price' => '11.42033', 'time' => '2018-04-19 09:45:56'], ['id' => '9391', 'coins_id' => '22', 'price' => '17.87132', 'time' => '2018-04-19 10:09:17'], // 其他更多数据... ]; // 按时间升序排序 usort($priceData, function($a, $b) { return strtotime($a['time']) - strtotime($b['time']); }); // 获取最早和最晚的价格 $oldPrice = (float)reset($priceData)['price']; $newPrice = (float)end($priceData)['price']; // 计算百分比差值 if ($oldPrice != 0) { $percentageChange = number_format((($newPrice - $oldPrice) / $oldPrice) * 100, 2); echo "从 {$oldPrice} 到 {$newPrice},价格变化了 {$percentageChange}%"; } else { echo "无法计算:旧价格为0"; }
这样就能轻松得到你想要的结果啦!
内容的提问来源于stack exchange,提问作者major697
相关产品推荐
相关产品推荐

