
本文旨在帮助开发者掌握如何使用PHP处理从数据库获取的JSON数组数据,并在此基础上,通过计算时间差,将“时间前”的概念整合到原始JSON数组中,最终生成包含id、CreatedAt和Time字段的JSON数据,以便在应用程序中更友好的展示评论时间。
在PHP中,处理JSON数据并对其进行修改是一项常见的任务。以下是如何将时间信息合并到从数据库获取的JSON数组中的详细步骤。
1. 获取JSON数据
首先,从数据库获取数据并将其编码为JSON格式。假设你已经有了一个名为 $CommentTime 的数组,它包含了从数据库中提取的评论数据。
立即学习“PHP免费学习笔记(深入)”;
$CommentTime= $this->M_main->GetFeedsCommentTime($FeedId); echo json_encode($CommentTime);
这段代码将 $CommentTime 数组转换为JSON字符串并输出。 $CommentTime 数组的结构如下:
[
{"id":"475","CreatedAt":"1636953999"},
{"id":"474","CreatedAt":"1636953988"},
{"id":"473","CreatedAt":"1636953977"}
]2. 遍历数组并计算时间差
接下来,使用 foreach 循环遍历数组,并计算每条评论的“时间前”表示。关键在于使用 &$cmt 引用传递,这样可以直接修改原始数组中的元素。
foreach($CommentTime as &$cmt) {
$CreatedAt = $cmt['CreatedAt'];
$PostedAts = $CreatedAt;
$time_ago = $PostedAts;
$cur_time = time();
$time_elapsed = $cur_time - $time_ago;
$seconds = $time_elapsed ;
$minutes = round($time_elapsed / 60 );
$hours = round($time_elapsed / 3600);
$days = round($time_elapsed / 86400 );
$weeks = round($time_elapsed / 604800);
$months = round($time_elapsed / 2600640 );
$years = round($time_elapsed / 31207680 );
// Seconds
if($seconds <= 60){
$PostedTime= "just now";
}
//Minutes
else if($minutes <=60){
if($minutes==1){
$PostedTime= "one minute ago";
} else{
$PostedTime= "$minutes minutes ago";
}
}
//Hours
else if($hours <=24){
if($hours==1){
$PostedTime= "an hour ago";
}else{
$PostedTime= "$hours hrs ago";
}
}
// 将计算出的时间信息添加到数组元素中
$cmt['Time'] = $PostedTime;
}3. 输出结果
现在,$CommentTime 数组已经包含了 Time 字段,你可以将其编码为JSON并输出。
echo json_encode($CommentTime);
输出结果如下:
[
{"id":"475","CreatedAt":"1636953999","Time":"5 minutes ago"},
{"id":"474","CreatedAt":"1636953988","Time":"10 minutes ago"},
{"id":"473","CreatedAt":"1636953977","Time":"15 minutes ago"}
]注意事项:
总结:
通过使用 foreach 循环和引用传递,我们可以方便地修改JSON数组中的元素,并将计算出的时间信息添加到数组中。这种方法简单易懂,适用于大多数情况。 记得在实际应用中处理时区和数据类型,以确保结果的准确性。
以上就是PHP中合并JSON数组并添加时间信息的实用指南的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号