Giới thiệu môn học Lập trình Web PHP
1. Tóm tắt môn học Môn học Lập trình Web PHP gồm những nội dung chính...
Kết quả sẽ mở trong tab mới, giới hạn trong website này.
Truy cập nhanh
Tìm kiếm gần đây
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 […]
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.
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.
Ví dụ, chúng ta có dữ liệu về xe ôtô như bên dưới:
| Name | Stock | Sold |
| Name | Stock | Sold |
| Volvo | 22 | 18 |
| BMW | 15 | 13 |
| Saab | 5 | 2 |
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>";
}
?>
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
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,
),
);
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>";
?>
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
)
)
)
<?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>";
}
}
?>
$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].