Maksud Anda while($j<$i)
di sana.
Ingat, Anda menambah $i setelah sisipan terakhir. Ini berarti $i akan lebih tinggi dari kunci maksimum $dish.
Beberapa pemikiran:
Setiap kali Anda menguji kesetaraan dengan nol, Anda harus mempertimbangkan untuk menggunakan is_null
(atau !is_null). Ini lebih akurat.
Ini:
$dish[$i]=$row['dishes'];
$i++;
Akan lebih baik sebagai:
// obviously instead of $i you would use count($dish) later (or use foreach)
$dish[]=$row['dishes'];
Perulangan while terakhir akan lebih baik sebagai foreach:
foreach($dish as $val)
{
echo $val;
}