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