[PHP] Phần 16: Mảng đa chiều trong PHP | DAMMIO

Trong phần trước, bạn đã học về kiểu dữ liệu mảng trong PHP cũng như cách tạo, truy xuất, duyệt, xóa, thêm các phần tử trong mảng. Trong bài này, bạn sẽ học về mảng đa chiều, một trong những kiểu dữ liệu làm nên tên tuổi của PHP trong thế giới lập trình Web.

Mảng đa chiều

Mảng đa chiều là mảng chứa một hoặc nhiều chiều (mảng con). Trong bài trước, bạn đã hiểu 1 mảng là kiểu dữ liệu chứa nhiều phần tử theo thứ tự liên tiếp nhau. Nếu một mảng có các phần tử chứa các mảng con, mỗi phần tử mảng con lại chứa mảng con nữa… thì bạn có thể gọi đây là mảng đa chiều.

Bạn có thể tạo mảng nhiều chiều bao nhiêu tùy ý, tuy nhiên theo DAMMIO.COM bạn chỉ nên tạo mảng tối đa 3 để có thể quản lý dễ dàng.

Mảng hai chiều

Trước hết, bạn hãy làm quen với mảng 2 chiều, chúng ta có một bảng chứa dữ liệu như sau.

Tên		Tuổi		Điểm
Dammio		22		9
Lan		25		8
Vy		18		5
Hoa		17		10

Để lưu trữ bảng này, bạn có thể dùng mảng 2 chiều như sau với tên mảng là $student.

<?php
$students = array
  (
  array("Dammio",22,9),
  array("Lan",25,8),
  array("Vy",18,5),
  array("Hoa",17,10)
  );
  
// Xem điểm thi của Lan.
// Lan có vị trí thứ 1 trong mảng chính và điểm của Lan có vị trí thứ 2 trong mảng con.
echo $students[1][2]; 
?>

Trong ví dụ trên để truy xuất 1 phần tử, bạn có thể tìm vị trí phần tử chính trong mảng sau đó là tìm vị trí phần tử con trong mảng phụ. Ví dụ $students[1][1] là tìm sinh viên ở vị trí 1 và tìm thông tin của sinh viên ở vị trí 1.

Bạn có thể sử dụng 2 vòng lặp (for hoặc foreach) để duyệt mảng 2 chiều trên như sau.

<?php
$students = array
  (
  array("Dammio",22,9),
  array("Lan",25,8),
  array("Vy",18,5),
  array("Hoa",17,10)
  );
  
for ($row = 0; $row < 4; $row++) {
  echo "<p><b>Số dòng $row</b></p>";
  echo "<ul>";
  for ($col = 0; $col < 3; $col++) {
    echo "<li>".$students[$row][$col]."</li>";
  }
  echo "</ul>";
}

foreach($students as $item)
{
	echo "<p><b>Sinh viên</b></p>";
	echo "<ul>";
	foreach($item as $value)
	{
		echo "<li>".$value."</li>";	
	}
	echo "</ul>";
}
?>

Nếu mỗi sinh viên trong ví dụ trên có 2 cột điểm thì bạn có thể tạo mảng 3 chiều như sau.

<?php
$students = array
  (
  array("Dammio",22,array(9, 8)),
  array("Lan",25,array(7, 7)),
  array("Vy",18,array(7, 5)),
  array("Hoa",17,array(9, 8))
  );
  
// Xuất cột điểm cuối cùng của sinh viên có tên là "Dammio"
echo $students[0][2][1]; 
?>

Về cách duyệt vòng for/foreach thì cũng tương tự như mảng 2 chiều.

Kết luận

Nếu bạn tinh ý, mảng đa chiều trong PHP có thể áp dụng cho các bảng cơ sở dữ liệu hoặc kiểu dữ liệu lớp, đối tượng nào đó. Vì vậy đây là lý do mảng đa chiều trong PHP là kiểu dữ liệu rất mạnh và rất thú vị.