Mảng 2 chiều (2 dimensional array) trong PHP

Đây là bài 23/53 bài của series môn học Lập trình Web PHP

Mảng nhiều chiều (multidimensional array) là một mảng bao gồm 1 hoặc nhiều mảng khác. PHP hỗ trợ mảng 2, 3, 4, 5 chiều hoặc có số chiều nhiều hơn nữa. Tuy nhiên, mảng có hơn 3 chiều rất khó quản lý và truy xuất dữ liệu. Trong bài này, chúng ta sẽ chỉ tập trung tìm hiểu mảng 2 và 3 chiều trong PHP.

Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.

1. Mảng 2 chiều (2 dimensional array) trong PHP

Mảng 2 chiều là mảng của mảng. Mảng 2 chiều có thể lưu trữ các phần tử có bất kỳ kiểu dữ liệu nào. Mảng 2 chiều được tổ chức như một bảng gồm các dòng và cột. Để truy xuất các phần tử trong mảng, chúng ta phải chỉ định rõ chỉ số dòng và chỉ số cột.

Minh họa 2 dimensional array trong PHP

Ví dụ, chúng ta có dữ liệu về xe ôtô như bên dưới:

NameStockSold
NameStockSold
Volvo2218
BMW1513
Saab52

Chúng ta có thể sử dụng mảng 2 chiều để lưu trữ dữ liệu của bảng trên như sau:

$cars = array (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
);

Mảng 2 chiều $cars lữu trữ 4 mảng tương ứng 4 dòng và mỗi dòng này lưu trữ 3 cột giá trị là name, stock, sold. Để truy cập vào các phần tử của mảng $cars, chúng ta phải chỉ định rõ chỉ số hàng và cột:

<?php
$cars = array (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
);
echo $cars[0][0].": In stock: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";
echo $cars[1][0].": In stock: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
echo $cars[2][0].": In stock: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
echo $cars[3][0].": In stock: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";
?>

Chúng ta có thể sử dụng 2 vòng lặp for để truy xuất các phần tử trong mảng 2 chiều:

<?php
$cars = array (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
);
for ($row = 0; $row < 4; $row++) {
    echo "Row number $row: ";
    for ($col = 0; $col < 3; $col++) {
        echo $cars[$row][$col]." ";
    }
    echo "<br>";
}
?>
Kết quả
Row number 0: Volvo 22 18
Row number 1: BMW 15 13
Row number 2: Saab 5 2
Row number 3: Land Rover 17 15

2. Mảng 2 chiều kết hợp (2 dimensional associative array) trong PHP

Mảng 2 chiều kết hợp (2 dimensional associative array) cũng giống như mảng 2 chiều bình thường. Nhưng các phần tử được gán bằng một key nào đó, key có thể là số (number) hoặc chuỗi (string).

$marks = array(
  "Son" => array(
      "Math" => 5.5,
      "English" => 8.5,
      "Physics" => 7.4,
  ),
  "Kane" => array(
      "Math" => 7.8,
      "English" => 9.8,
      "Physics" => 4.6,
  ),
  "John" => array(
      "Math" => 8.8,
      "English" => 4.6,
      "Physics" => 9.9,
  ),
);

3. Mảng 3 chiều (3 dimensional array) trong PHP

Mảng 3 chiều là một mảng của mảng của mảng. Cách tạo mảng 3 chiều giống với mảng 2 nhiều. Nhưng mỗi phần tử trong mảng 2 chiều bây giờ là một mảng khác.

<?php
$numberarr = array(
  array(
      array(1, 2),
      array(3, 4),
  ),
  array(
      array(5, 6),
      array(7, 8),
  ),
);
print "<pre>";
print_r($numberarr);
print "</pre>";
?>
Kết quả
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 1
                    [1] => 2
                )
            [1] => Array
                (
                    [0] => 3
                    [1] => 4
                )
        )
    [1] => Array
        (
            [0] => Array
                (
                    [0] => 5
                    [1] => 6
                )
            [1] => Array
                (
                    [0] => 7
                    [1] => 8
                )
        )
)

Chương trình xuất các phần tử của mảng 3 chiều trong PHP

<?php
$numarr = array(
  array(
      array(1, 2),
      array(3, 4),
      array(7, 10),
  ),
  array(
      array(5, 6),
      array(7, 8),
      array(15, 21),
  ),
);
for ($i=0; $i < count($numarr); $i++) { 
  for ($j=0; $j < count($numarr[$i]); $j++) { 
      for ($k=0; $k < count($numarr[$i][$j]); $k++) { 
          echo "$"."numarr[$i][$j][$k]: ".$numarr[$i][$j][$k];
          echo "<br>";
      }
      echo "<br>";
  }
}
?>
Kết quả
$numarr[0][0][0]: 1
$numarr[0][0][1]: 2

$numarr[0][1][0]: 3
$numarr[0][1][1]: 4

$numarr[0][2][0]: 7
$numarr[0][2][1]: 10

$numarr[1][0][0]: 5
$numarr[1][0][1]: 6

$numarr[1][1][0]: 7
$numarr[1][1][1]: 8

$numarr[1][2][0]: 15
$numarr[1][2][1]: 21

Để truy xuất một phần tử trong mảng 3 chiều, chúng ta cần chỉ định rõ 3 chỉ số chiều. Ví dụ, truy xuất phần tử đầu tiên trong mảng 3 chiều $numarr thì sử dụng $numarr[0][0][0].

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Mảng kết hợp (associative array) trong PHPCác hàm sắp xếp (sort) mảng trong PHP >>
Chia sẻ trên mạng xã hội:

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.