从数据库

时间:2018-03-22 19:56:41

标签: php

我有一个数据库链接到游戏。当游戏插入玩家"游戏时间"它为每个玩家派系添加了这样的内容

游戏时间"[0,0,0]" (COP,MEDIC,CIV) - 所以0中的每一个都代表每个玩家阵营。

当玩家正在玩那个阵营时,只有1个号码会更新该号码用于该阵营。

示例 playtime "[9012,1221,2663]" - 所以玩家现在已经玩了 关于CIV的44 Hours and 23 Minutes和关于MEDIC的20 Hours and 21 Minutes和关于COP的150 Hours and 12 Minutes

我想要的是在表格中显示每个数字,并在表格中显示每行的时间......

示例

<table>
<tr>
<td>cop</td>
<td>medic</td>
<td>civ</td>
</tr>
<tr>
<td>150 Hours and 12 Minutes</td>
<td>20 Hours and 21 Minutes</td>
<td>44 Hours and 23 Minutes</td>
</tr>
</table>

因此,如果我在上面发布的时间内没有显示,我希望将每个输出显示为小时/分钟,并显示在各自的表格行中。

我目前正在使用此

<td> " . str_replace( array('[',']', '"') , '' ,$row['playtime']). "</td>

仅显示 0,0,2891

等时间

如果这没有意义,请告诉我。

3 个答案:

答案 0 :(得分:1)

正如您$row['playtime']格式["nnn,nnn,nnn"]首先 trim 远方方括号和双引号:

$playtime = trim( $row['playtime'], '"[]' );

然后将字符串拆分为一个数组,其中三个值为 explode

$playtime = explode( ",", $playtime );

使用 gmdate 将秒数转换为H:m:s

$cop = gmdate( "H:i:s", $playtime[0] );
$med = gmdate( "H:i:s", $playtime[1] );
$civ = gmdate( "H:i:s", $playtime[2] );

您每次都会采用hh:mm:ss

格式

你可以继续

$cop = explode( ":", $cop );
$cop = "{$cop[0]} Hours and {$cop[1]} Minutes";

等等。

答案 1 :(得分:0)

这很简单,但你应该展示你的尝试。 实现它的一种方法如下(非常香草的PHP):

$values = "9012,1221,2663";
$minutes = explode(',', $values);
foreach ($minutes as $item) {
    $hours = round(intval($item)/60);
    $minonly = gmp_div_r(intval($item),60);
    echo '<td>' . $hours . ' and ' . $minonly . ' minutes</td>' . PHP_EOL;
}

答案 2 :(得分:0)

您可以使用DateTime::createFromFormat()创建DateTime对象,并使用DateInterval创建的diff()格式化字符串:

// $row['playtime'] = '"[9012,1221,2663]"';
// here $row['playtime'] come from your data source

$times = explode(',', trim($row['playtime'], '[]"'));

$times = array_map(function($t) {
        $d1 = DateTime::createFromFormat("U", 0);
        $d2 = DateTime::createFromFormat("U", $t * 60);
        $diff = $d1->diff($d2);
        return ($diff->d * 24 + $diff->h) . " hours, " . $diff->i . " minutes" ;
    }, $times);

print_r($times);

输出:

Array
(
    [0] => 150 hours, 12 minutes
    [1] => 20 hours, 21 minutes
    [2] => 44 hours, 23 minutes
)