Vous voulez dire while($j<$i)
là.
Rappelez-vous, vous avez incrémenté $i après la dernière insertion. Cela signifie que $i sera supérieur à la clé maximale de $dish.
Quelques réflexions :
Chaque fois que vous testez l'égalité avec null, vous devriez envisager d'utiliser is_null
(ou !is_null). C'est plus précis.
Ceci :
$dish[$i]=$row['dishes'];
$i++;
Serait mieux comme :
// obviously instead of $i you would use count($dish) later (or use foreach)
$dish[]=$row['dishes'];
Cette boucle while finale serait mieux comme foreach :
foreach($dish as $val)
{
echo $val;
}