0

使用 php 我想减/减两次;每次在一个单独的文档中,然后让 php 将结果(减去两次后的结果)写入另一个文本文档或没有 HTML 标签的 html 文档中,只是文本。减去的两次将确定某个玩家在使用该脚本的游戏中玩了多长时间。还有,当我说剧本要减两次的时候,其实是针对一个玩家的,所以总体上应该减两次以上;取决于有多少人真正玩这个游戏。

如果您查看以下内容,这是一个文本文件,其中包含玩家的用户名以及玩家的本地时间,后跟其他与此案例无关的数字:

文本文件称为“begin.txt”:

“AULLAH1”“01/07/2010 15:28”“55621454”“123456”“123456.00”

“用户名”“2010 年 7 月 3 日下午 6:21”“55621454”“123456”“123456.00”

“AULLAH1” “07/07/2010 15:05” “55621454” “189450” “123456.00”

“超级玩家”“2010 年 7 月 8 日下午 6:42”“55621454”“123456”“123456.00”

有两个“AULLAH1”用户名条目,因为该玩家已经玩了两次游戏。第一行的下一个条目是“01/07/2010 15:28”,这是人“AULLAH1”的日期和当前时间。日期和时间之后的其他数据无关紧要,因此可以忽略。

在另一个文本文档中,标题为“end.txt”的是以下数据,其格式与之前的文本文件相同:

“AULLAH1”“01/07/2010 15:54”“55621454”“123456”“123456.00”

“用户名”“2010 年 7 月 3 日下午 6:49”“55621454”“123456”“123456.00”

“AULLAH1” “07/07/2010 15:32” “55621454” “189450” “123456.00”

此文本文件中的不同之处在于没有名为“SUPREMEGAMER”的玩家,因为该玩家未能完成游戏。此外,对于那些设法完成游戏的用户来说,时间是不同的。玩家“AULLAH1”也被列出两次,因为该玩家已经完成了两次游戏。

我希望 php 脚本在 end.txt 文件中搜索用户名“AULLAH1”的最后一个条目,然后再次抓取整行,从 begin.txt 中搜索“AULLAH1”的最后一个条目,然后减去时间. 减去它后,我希望将用户名和时间写入另一个文本文档或没有 HTML 标记的 html 文档中,只是文本(如前所述)。因此,这只会显示用户“AULLAH1”的播放时间,因此,我希望对 end.txt 文档中的每个用户名都执行此过程。

感谢您提供所有帮助,我期待您的回复;谢谢你。:) 如果我没有清楚地解释任何事情和/或您希望我更详细地解释,请回复。:)

4

1 回答 1

1

我不打算在这里讨论文本文件搜索。假设最终您将开始时间和结束时间放在一起。获得两者之间的差异非常容易。

(值得注意的是,我认为您的时间颠倒了。“结束”文件中的时间总是低于“开始”文件中的时间,这可能是不对的。此外,您似乎将日期存储在 DD /MM/YYYY 格式,我的示例可能无法正确解析,因为它在 13 日之前的任何一天都可能不明确。您可能希望将它们存储为 YYYY-MM-DD 格式,这是完全明确的。)

这是方式 1,使用普通的旧 unix 时间戳。

// First we have our times in a human readable format. 
// Let's make them into unix timestamps
$start_time = strtotime('01/07/2010 15:28');
$end_time = strtotime('01/07/2010 15:54');
$difference_in_seconds = $end_time - $start_time;
// If you need the difference in minutes or hours, you'll need to 
// do the math yourself.
echo "That turn took {$difference_in_seconds} seconds to complete.";

这是方法 2,使用 PHP 的新DateTimeDateInterval类。这仅适用于 PHP 5.3 或更高版本。

// We have our times in human readable format.
// Let's make them into DateTimes
$start_time = new DateTime('01/07/2010 15:28');
$end_time = new DateTime('01/07/2010 15:54');
$interval = $end_time->diff($start_time, true);
echo "That turn took " . $interval->format('%h hours, %i minutes and %s seconds.');
于 2010-07-17T17:05:00.607 回答