2011-09-18 129 views
0

是什麼導致第二個函數錯過第二個數組的最後一項?爲什麼第二個數組比第一個少一個?

$x = array(
    'Mon Sep 12 12:19:33 +0000 2011', 
    'Tue Sep 13 14:19:33 +0000 2011', 
    'Wed Sep 14 01:19:33 +0000 2011', 
    'Thu Sep 15 07:19:33 +0000 2011', 
    'Fri Sep 16 16:19:33 +0000 2011', 
    'Fri Sep 16 19:19:33 +0000 2011', 
    'Sat Sep 17 15:57:37 +0000 2011', 
    'Sun Sep 18 13:01:39 +0000 2011', 
    'id' => array('a','b') 
); 

//Create function to turn timestamps into unix timestamps so 
function textTimeToUnixTime($x) { 
    $z = array(); 
    for($i = 0; $i < count($x) - 1; $i++) { 
    array_push($z, strtotime($x[$i])); 
    } 
    return $z; 
} 

function timeDifference($x) { 
    //Get Time Difference of the timestamps 
    array_reverse($x); 
    $z = array(); 
    for($i = 0; $i < count($x) - 1; $i++) { 
    $a = $x[$i+1] - $x[$i]; 
    array_push($z, $a); 
    } 
    return $z; 
} 

輸出

array(8) { 
    [0]=> int(1315829973) 
    [1]=> int(1315923573) 
    [2]=> int(1315963173) 
    [3]=> int(1316071173) 
    [4]=> int(1316189973) 
    [5]=> int(1316200773) 
    [6]=> int(1316275057) 
    [7]=> int(1316350899) 
} 

array(7) { 
    [0]=> int(93600) 
    [1]=> int(39600) 
    [2]=> int(108000) 
    [3]=> int(118800) 
    [4]=> int(10800) 
    [5]=> int(74284) 
    [6]=> int(75842) 
} 
+1

將輸出格式化爲兩段文字有什麼好處? –

+0

我更驚訝的是第一個函數創建了一個包含8個元素的數組。第二個函數的輸出更有意義,因爲'$ i'是最大數組長度 - 2 –

+0

對於我來說,這個代碼返回2個大小爲8的數組和警告。你爲什麼不用'foreach'呢? – zerkms

回答

2

因爲在爲TimeDifference最後的循環調用$ X [7 + 1],但有沒有這樣的$ X [8]而是$ X [ '身份證']所以它只能工作到7.

無論如何,如果你比較一次和下一次,差異的數量應該比1次少1次。

相關問題