php计算foreach循环中2个间隔之间的值

php计算foreach循环中2个间隔之间的值,php,arrays,foreach,Php,Arrays,Foreach,我有以下数组: Array ( [0] => Array ( [serial_number] => 00127B4EE68F [start_log_date] => 00:34:28 [log_date] => 00:36:52 [good_files] => 11 [bad_files] => 0

我有以下数组:

    Array
(
    [0] => Array
        (
            [serial_number] => 00127B4EE68F
            [start_log_date] => 00:34:28
            [log_date] => 00:36:52
            [good_files] => 11
            [bad_files] => 0
            [interrupted_files] => 0
            [skipped_door_files] => 0
            [max_rate] => 560.52
            [min_rate] => 215.59
            [avg_rate] => 360.54
            [total_bytes_before_transfer] => 40598530
            [total_bytes_after_transfer] => 0
            [firmware] => 10.6
        )

    [1] => Array
        (
            [serial_number] => 00127B4F0F98
            [start_log_date] => 00:59:55
            [log_date] => 01:00:21
            [good_files] => 1
            [bad_files] => 0
            [interrupted_files] => 0
            [skipped_door_files] => 0
            [max_rate] => 
            [min_rate] => 
            [avg_rate] => 
            [total_bytes_before_transfer] => 2276
            [total_bytes_after_transfer] => 0
            [firmware] => 10.6
        )

    [2] => Array
        (
            [serial_number] => 00127B4F0F97
            [start_log_date] => 01:00:59
            [log_date] => 01:01:55
            [good_files] => 4
            [bad_files] => 0
            [interrupted_files] => 0
            [skipped_door_files] => 0
            [max_rate] => 557.7
            [min_rate] => 334.16
            [avg_rate] => 397.21
            [total_bytes_before_transfer] => 11979855
            [total_bytes_after_transfer] => 0
            [firmware] => 10.6
        )

    [3] => Array
        (
            [serial_number] => 00127B4ED82D
            [start_log_date] => 01:08:10
            [log_date] => 01:08:35
            [good_files] => 1
            [bad_files] => 0
            [interrupted_files] => 0
            [skipped_door_files] => 0
            [max_rate] => 
            [min_rate] => 
            [avg_rate] => 
            [total_bytes_before_transfer] => 234
            [total_bytes_after_transfer] => 0
            [firmware] => 10.6
        )

    [4] => Array
        (
            [serial_number] => 00127B4EE61D
            [start_log_date] => 01:54:51
            [log_date] => 01:55:17
            [good_files] => 1
            [bad_files] => 0
            [interrupted_files] => 0
            [skipped_door_files] => 0
            [max_rate] => 
            [min_rate] => 
            [avg_rate] => 
            [total_bytes_before_transfer] => 68136
            [total_bytes_after_transfer] => 0
            [firmware] => 10.6
        )


)
我想检查
log\u date
中的值是否小于下一个
start\u log\u date
。如果较小,则进行计数并继续。我做了一个
foreach
循环,但没有得到我想要的结果

这是我希望显示结果的方式(示例):

这是我的初始循环:

        $iCount = 1;
    $i = 0;  

    foreach($aRecordsPerDay as $key=>$aRow)
        {

                $aTimeStart[] = strtotime($aRow["start_log_date"]);
                $aTimeStopOld[] = strtotime($sTimeStopOld);

                    if(strtotime($aRow['start_log_date']) < max($aTimeStopOld))
                    {
                      $sTimeStart = $aTimeStart[$i-$iCount];

                      $sTimeStop = $aRow['log_date'];
                      if(strtotime($sTimeStop) < strtotime($sTimeStopOld))
                            $sTimeStop = $sTimeStopOld;
                            $aTimeStop[] = strtotime($sTimeStop);
                            $iCount+=1;
                    }
                    else
                    {

                        if($iCount > 1)
                        {
                            echo "Simultaneous connections".$iCount;

                            $iCount = 1;
                        }
                        else
                        {
                            echo "Simultaneous connections 1";
                            $iCount = 1; 

                        }
                    }


                $sTimeStartOld=$aRow['start_log_date'];
                $sTimeStopOld=$aRow['log_date'];
                $i++;
                ///show data


                }

您可以访问数组的每个项,而无需使用for循环

for($i = 0; $i < $ArrayName.length; $++) {
   if($ArrayName[$i]['log_date'] < $ArrayName[$i+1]['start_log_date']) {
      $count++;
   }
}
($i=0;$i<$ArrayName.length;$++)的
{
如果($ArrayName[$i]['log\u date']<$ArrayName[$i+1]['start\u log\u date'])){
$count++;
}
}
如果使用,则应能正常工作

$count=0;
对于($i=0;$i
您可以对
日期时间对象使用
for
循环:

$count = 0; // initialize counter

for ($i=0; $i < count($array) - 1 ; $i++) { 
    $log_date = new DateTime($array[$i]['log_date']);
    $start_log_date = new DateTime($array[$i+1]['start_log_date']);

    if ($log_date < $start_log_date) {
        $count++;
    } else {
        break;
    }
}

您可以显示循环吗?请显示尝试,以便人们可以帮助您解决问题。如果您的循环看起来像是
foreach($arr as$key=>$value)
,您现在可以通过
$key+1
轻松访问下一个元素(如果存在!)@h2oooooooo出错了。现在修好了。
for($i = 0; $i < $ArrayName.length; $++) {
   if($ArrayName[$i]['log_date'] < $ArrayName[$i+1]['start_log_date']) {
      $count++;
   }
}
$count = 0;
for ($i = 0; $i < count($array) - 1; ++$i) {
    if (strtotime($array[$i]['log_date']) < strtotime($array[$i + 1]['log_date'])) ++$count;
}
$count = 0; // initialize counter

for ($i=0; $i < count($array) - 1 ; $i++) { 
    $log_date = new DateTime($array[$i]['log_date']);
    $start_log_date = new DateTime($array[$i+1]['start_log_date']);

    if ($log_date < $start_log_date) {
        $count++;
    } else {
        break;
    }
}
4