2011-09-18 133 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次。

相关问题