Jonathan là chính xác. Các mảng PHP hoạt động như một khóa ánh xạ bảng ánh xạ tới các giá trị. trong một số trường hợp, bạn có thể nhận được một chỉ mục nếu mảng của bạn được xác định, chẳng hạn như
$var = array(2,5);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
đầu ra của bạn sẽ là
2
5
trong trường hợp đó, mỗi phần tử trong mảng có một chỉ mục có thể biết được, nhưng nếu sau đó bạn làm một cái gì đó như sau
$var = array_push($var,10);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
bạn không nhận được đầu ra. Điều này xảy ra bởi vì các mảng trong PHP không phải là cấu trúc tuyến tính giống như trong hầu hết các ngôn ngữ. Chúng giống như các bảng băm có thể có hoặc không có khóa cho tất cả các giá trị được lưu trữ. Do đó foreach không sử dụng các chỉ mục để thu thập dữ liệu vì chúng chỉ có một chỉ mục nếu mảng được xác định. Nếu bạn cần phải có một chỉ mục, hãy đảm bảo các mảng của bạn được xác định đầy đủ trước khi thu thập dữ liệu và sử dụng vòng lặp for.