为什么第二个数组少于第一个?

时间:2011-09-18 22:22:54

标签: php

是什么导致第二个函数错过第二个数组的最后一项?

$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 :(得分:2)

因为在timeDifference中它最后一个循环调用$ x [7 + 1]但是没有这样的$ x [8]而是$ x ['id']所以它只能工作到7。

无论如何,如果你将一次与下一次进行比较,那么差异的数量应该少于1次。