2014-10-10 100 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年低於