In the code below,
array contains status and timestamp.
If status is all zero then the difference of time is calculated. and if status changes from 0 to 1 again timestamp is calculated.
Now here in the array after timestamp 2008-06-13 00:50:00 to end of the array if status is 0 then timestamp is not calculated.
Please tell me how to change in the code below.
[code]
<?php
$values=array(
“0#2008-06-13 00:10:00”,
“0#2008-06-13 00:20:00”,
“0#2008-06-13 00:30:00”,
“1#2008-06-13 00:40:00”,
“0#2008-06-13 00:50:00”,
“0#2008-06-13 01:10:00″
);
$i=0;
$outset = array();
$status = array();
$aset = 0;
foreach($values as $v) //For each element in the values array
{
// Split the value by hash
$vals = explode(‘#’, $v);
// If this is the first loop, set the previous status
if($i == 0) {$previous_value = $vals[0]; $i=1; $starttime = $vals[1];}
// If the previous =0 and the current is 1, store the values in a new array for output
if($previous_value == 0 && $vals[0] == 1)
{
$aset = 1;
$tdiff = strtotime($vals[1]) – strtotime($starttime);
$outset[] = $starttime.’ ‘.$vals[1].’ ‘.$tdiff;
}
if($vals[0] == 0 && $previous_value == 1)
{
$starttime = $vals[1];
}
// Store the current, for the next loop it is previous value
$previous_value = $vals[0];
$lasttime = $vals[1];
}
if($aset == 0)
{
$tdiff = strtotime($vals[1])-strtotime($starttime);
$outset[] = $starttime.’ ‘.$lasttime.’ ‘.$tdiff;
}
echo”<pre>”;
print_r($outset);
echo”</pre>”;
?>