2014-10-10 103 views
-2

所以我是新来的PHP,我正在写一个脚本,采取“2014年1月23日下午11:01”的形式的时间戳,并将其分解成元素的多维数组月份,日期,年份,小时和分钟。这里是我的代码:格式化php for循环

$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循环。有没有人看到明显的初学者错误?

回答

1

正因为如此:$i=($num_dates-1)您需要检查的条件==,不要使用转让=。虽然在这种情况下,看起来你想要做这样的事情:$i <= ($num_dates-1)。您可能忘记输入<

+0

完美。我确实忘记了<。谢谢! – boulderz 2014-10-10 22:35:09

1

这是分配一个值...

$i=($num_dates-1); 

这是比较和你所需要的:

$i < $num_dates 
0
$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年低于