Si, infatti non ho potuto rispondere prima.
ttcc date_diff l'ho provata e dà lo stesso risultato di ->diff.
Rispondo anche a dabula dicendo che a me serve 05 e non 5 perchè le ore ed i minuti li devo poi sommare, se sommo 5.5 con 5.45, il risultato è 5.95, se sommo 5.05 con 5.45, il risultato 5.50, spero di avervi fatto capire il motivo della mia richiesta, quindi non mi è utile farmi stampare Ore 5, Minuti 5.

Ho provato il tuo metodo darbula e sembra funzionare, spero che sia valido per ogni tipo di input. In alternativa avevo modificato anche quella che avevo postato all'inizio: differenzaore, in questo modo

codice:
function differenzaore($ora2, $ora1){
        $sep=':';
                                
        $part = explode($sep, $ora1);
        $arr = explode($sep, $ora2);
        
        if($arr[0]<$part[0]){
            $diff= mktime($arr[0]+24, $arr[1]) - mktime($part[0], $part[1]);
        }else{
            $diff= mktime($arr[0], $arr[1]) - mktime($part[0], $part[1]);
        }
        
        
        $ore=floor($diff / (60*60)); 
        $minuti=($diff / 60) % 60;
        $ore = str_pad($ore,2,0,STR_PAD_LEFT);
        $minuti = str_pad($minuti,2,0,STR_PAD_LEFT);
        $risultato = $ore.":".$minuti;
        return $risultato;
    }
in questo modo, per gli orari che si accavallano su due giorni, controllo se $ora2 è più piccola vuol dire che mi trovo al giorno successivo e quindi aggiungo 24 alle ore, non so quanto sia corretto, ma anche questo sembra funzionare