【问题标题】:Formatting php for-loop格式化php for循环
【发布时间】:2014-10-10 22:07:37
【问题描述】:

所以我是 php 新手,我正在编写一个脚本,以“2014 年 1 月 23 日晚上 11:01”的形式获取时间戳,并将其分解为一个多维数组,其中包含月份、日期、年、小时和分钟。这是我的代码:

$raw_data= array("January 20, 1993 at 10:20PM", "September 6, 1991 at 6:23PM");
        var_dump($raw_data);
        $num_dates= count($raw_data);

//Step 1: break content into month, day, year, hour, and minutes
    for ($i=0; $i=($num_dates-1); $i++) {   
        $partial_data = implode(preg_split("/[A-Z]{2}/", $raw_data[$i]));
        $broken_data[$i] = preg_split("/[\s,:]/", $partial_data);
        unset($broken_data[$i][2]);
        unset($broken_data[$i][3]);
}

由于某种原因,当我在终端中运行它时,它似乎是一个无限循环。我在一个一维数组上测试了 for 循环中的代码,输出是我所期望的,所以我很确定我的问题是因为我不知道如何在 php 中格式化 for 循环。有没有人看到明显的初学者错误?

【问题讨论】:

    标签: php for-loop


    【解决方案1】:

    因此:$i=($num_dates-1) 你需要检查条件==,而不是使用赋值=。尽管在这种情况下,您似乎想要执行以下操作:$i <= ($num_dates-1)。您可能刚刚忘记输入<

    【讨论】:

    • 完美。我确实忘记了
    【解决方案2】:

    这是赋值...

    $i=($num_dates-1);
    

    这是比较和你需要的:

    $i < $num_dates
    

    【讨论】:

      【解决方案3】:

      不直接回答您的问题,但有更简单的方法来解析日期。您可以使用 strtotime() 从字符串转到时间戳,然后创建 DateTime 以使用 DateTime::format() 访问日期部分。

      http://php.net/manual/en/function.strtotime.php

      http://php.net/manual/en/class.datetime.php

      http://php.net/manual/en/datetime.format.php

      【讨论】:

        【解决方案4】:
        $broken_data = array();
        $raw_data = array("January 20, 1993 at 10:20PM", "September 6, 1991 at 6:23PM");
        
        foreach($raw_data as $date) { 
           if ($d = strtotime(str_replace(' at ', ', ', $date)))  
             $broken_data[] = array(
                date('F', $d), date('j', $d), date('Y', $d), date('G', $d), date('i', $d)
             );
        }
        
        var_dump($broken_data);
        

        如果年份高于 1901 年低于 2038 年。

        【讨论】:

          猜你喜欢
          • 2020-02-22
          • 2018-10-21
          • 2021-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多