Я использую вашу модель данных, которая никогда не меняется, и ваши данные уже отсортированы так, как вы хотите, чтобы они были отсортированы.Итак, для такого массива:
$data = array
(
0 => array
(
'ActateLog' => array
(
'id' => 1,
'timeentry' => '2011-02-16 00:09:02',
'eventID' => 'OUT',
'terminalSN' => '00111DA08C8B',
'jpegPhoto' => false
)
),
1 => array
(
'ActateLog' => array
(
'id' => 1,
'timeentry' => '2011-02-16 00:09:12',
'eventID' => 'IN',
'terminalSN' => '00111DA08C8B',
'jpegPhoto' => false
)
)
);
Я создал функцию, которая возвращает массив с n / 2 строками и содержит как IN, так и OUT в одной строке.
function processMyArray($data)
{
$output = array();
$lim = count($data);
$i = $j = 0;
for($i=0; $i<$lim; $i+=2, $j++)
{
$output[$j] = array
(
'date' => substr($data[$i]['ActateLog']['timeentry'], 0, 10),
'IN' => substr($data[$i]['ActateLog']['timeentry'], 11),
'OUT' => substr($data[$i+1]['ActateLog']['timeentry'], 11),
'work_time' => strtotime($data[$i+1]['ActateLog']['timeentry']) - strtotime($data[$i]['ActateLog']['timeentry'])
);
}
return $output;
}