Você quer dizer
while($j<$i)
lá. Lembre-se, você incrementou $i depois a última inserção. Isso significa que $i será maior que a chave máxima de $dish.
Alguns pensamentos:
Sempre que estiver testando a igualdade com null, considere usar
is_null
(ou !is_null). É mais preciso. Este:
$dish[$i]=$row['dishes'];
$i++;
Seria melhor como:
// obviously instead of $i you would use count($dish) later (or use foreach)
$dish[]=$row['dishes'];
Esse loop while final seria melhor como foreach:
foreach($dish as $val)
{
echo $val;
}