ciao!
grazie ancora per la pazienza
sto testando e cercando di capire il tuo codice modificandolo un po...il lavoro lo svolge abbastanza bene però ci sono alcune parti non chiare tipo la parte relativa al " CASE 'T' //cf è uscito"...
procedendo con ordine: ho modificato un po la stampa a video fin qui tt ok 
facendo delle prove se manca un ingresso mi viene stampata la notifica cosi:
"ho l'uscita ma non ho l'entrata! x il cf: luca "
se manca l'entrata l'avviso mi viene stampato in questa maniera:
"entrata: 07/09/2012 07:30 - uscita: ciccio "
io vorrei raggiungere un risultato del genere:
codice:
entrata: N.D. - uscita: 05/04/2012 18:00 luca //ho l'uscita ma nn l'entrata
entrata: 03/09/2012 07:25 - uscita: 03/09/2012 16:01 marco
entrata: 04/09/2012 16:10 - uscita: 04/09/2012 16:12 andrea
entrata: 06/09/2012 07:29 - uscita: 06/09/2012 16:16 gino
entrata: 07/09/2012 07:30 - uscita: N.D. //ho l'entrata ma nn l'uscita
....
....
smanettando ho provato a fare varie modifiche ma niente 
qui il mio codice modificato
Codice PHP:
<?php
$sorgente = 'orari.txt';
$array_righe = file($sorgente);
$array_appoggio = array();
foreach($array_righe as $key => $tipo)
{
list($tipo, $data, $ora, $cf ) = explode("_", $tipo);
if(!array_key_exists($cf,$array_appoggio))
$array_appoggio[$cf] = array();
switch($tipo){
case 'I': //cf é entrato
$array_appoggio[$cf][] = array('data_in' => $data,'ora_in' => $ora,'data_out'=>null,'ora_out'=>null);
break;
case 'T': //cf è uscito
//cerco un'entrata senza uscita
if(!$array_appoggio[$cf])
{
echo "ho l'uscita ma non ho l'entrata! x il cf: $cf
";
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!!! x il cf: $cf
";
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
";
foreach($entrateUscite as $entry)
echo sprintf("entrata: %s - uscita: %s
",$entry['data_in'].' '.$entry['ora_in'],$entry['data_out'].' '.$entry['ora_out']. ' '.$cf );
}
?>
e la fonte dati "orari.txt"
codice:
I_03/09/2012_07:25_marco
T_03/09/2012_16:01_marco
I_04/09/2012_16:10_andrea
T_04/09/2012_16:12_andrea
T_05/09/2012_16:03_luca
I_06/09/2012_07:29_gino
T_06/09/2012_16:16_gino
I_07/09/2012_07:30_ciccio
ps. nel case ho messo I = ingresso, T = termine
grazie ancora