un'idea buttata giù in un minuto (e quindi non controllata o studiata):
Codice PHP:
$sorgente = 'dati.txt';
$array_righe = file($sorgente);
$array_appoggio = array();
foreach($array_righe as $key => $tipo)
{
list($tipo, $data, $ora, $cf ) = explode("_", $cmd);
if(!array_key_exists($cf,$array_appoggio)
$array_appoggio[$cf] = array();
switch($tipo){
case 1: //cf é entrato
$array_appoggio[$cf][] = array('data_in' => $data,'ora_in' => $ora,'data_out'=>null,'ora_out'=>null);
break;
case 2: //cf è uscito
//cerco un'entrata senza uscita
if(!$array_appoggio[$cf])
{
echo "ho l'uscita ma non ho l'entrata!";
break;
}
$f = false;
foreach($array_appoggio[$cf] as &$value)
{
if(!$value['data_out'])
{
$f = true;
$value['data_out']=$data;
$value['ora_out']=$ora;
break;
}
}
if(!$f)
echo "ho l'uscita ma non ho l'entrata!!!!";
break;
default:
echo "tipo $tipo sconosciuto";
break;
}
}
//stampo a video
foreach($array_appoggio as $cf => $entrateUscite){
echo "elenco delle entrate/uscite per il cf $cf\n\n";
foreach($entrateUscite as $entry)
echo sprintf("entrata: %s - uscita: %s \n",$entry['data_in'].' '.$entry['ora_in'],$entry['data_out'].' '.$entry['ora_out']);
}
vedi un pò te se ti piace la cosa