【问题标题】:how to get all numbers from a string and create a total amount using php如何从字符串中获取所有数字并使用php创建总量
【发布时间】:2012-12-27 18:54:48
【问题描述】:

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

前值:

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

TOTAL:22H:53M

我想得到所有值的总和 然后显示它,但我不知道如何从字符串中分离数字 然后将其转换为时间格式,我有什么办法可以实现 我正在寻找使用 php 脚本对值和数据进行转换和分离的结果?

【问题讨论】:

    标签: php string time valueconverter


    【解决方案1】:

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

    <?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。

    【讨论】:

      【解决方案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 中获取总时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多