Hmm, chyba źle się wyraziłem

Dokładnie to chcę zrobić małe cachowanie danych z bazy MySQL i dlatego zrzucam dane w pętli while do tablicy asocjacyjnej, tak aby powstało takie coś:
<?php
0 =>
'imie' => 'Jan',
'nazwisko' => 'Kowalski',
),
1 =>
'imie' => 'Jerzy',
'nazwisko' => 'Dudek',
),
),
);
?>
Problem w tym, że nie chcę mieć pustych rekordów, jeśli one w ogóle nie występują np. 'nazwisko' => ''
Obecnie tworzę tablice w taki sposób
<?php
$dane[] = array('imie' => $r['imie'], 'nazwisko' => $r['nazwisko']); ?>
I teraz potrzebowałbym jakiegoś magicznego sposobu, aby rozszerzyć powyższe tworzenie tabeli w pętli while o dodatkowe dane jeśli one występują np. wspomniany 'telefon'= $r['telefon']
Wiem, że mogę to zrobić na pomocą IF np.
<?php
if ($r['telefon'] != '')
$dane[] = array('imie' => $r['imie'], 'nazwisko' => $r['nazwisko'], 'telefon' => $r['telefon']); else
$dane[] = array('imie' => $r['imie'], 'nazwisko' => $r['nazwisko']); ?>
Problem w tym, że takich IFów musiało by być bardzo wiele, bo jest wiele możliwości wpisania danych jak np. wiek, miasto, rozmiar buta itd.
Mam nadzieję, że tym razem troszkę lepiej streściłem swój problem.