如何从字符串中获取所有数字并使用php创建总金额

时间:2012-12-27 18:54:49

标签: php string time valueconverter

我想获得从我们的数据库输出的总小时数,但问题是值是字符串格式

以前的值:

9H:20M
3H:13M
3H:50M
6H:30M

TOTAL:22H:53M

我希望获得所有值的总和 然后显示它,但我不知道如何将数字与字符串分开 然后将其转换为时间格式,有什么方法可以让我实现 结果我正在寻找使用PHP脚本进行转换和值和数据的隔离?

2 个答案:

答案 0 :(得分:4)

这是一个非常基本的解决方案:

<?php

$times = array("9H:20M", "3H:13M", "3H:50M", "6H:30M",);

$total = 0;
foreach ($times as $time) {
  preg_match("#(\d+)H:(\d+)M#", $time, $matches);
  $total += 60 * $matches[1] + $mtaches[2];
}

echo $total;

这会创建一个值$total,其中包含总分钟数。现在你可以转换回H和M.

答案 1 :(得分:2)

您可以使用strtotime或更新的DateTime类,但您当前的格式不兼容,因此您必须先进行一些修改。这是一个可能的解决方案:

<?php
$result = 0;
$times = array('9H:20M','3H:13M','3H:50M','6H:30M');
foreach($times as $time) {
    preg_match('/^(\d{1,2})H[:]([0-5][0-9])M$/',$time, $m);
    $timestamp = strtotime($m[1].':'.$m[2]);
    $result+=$timestamp;
}
echo date('H:i',$result);
?>

我认为更好的方法是直接从DB中获取总时间。