1. Khái niệm về mảng trong PHP
Mảng bản chất là một biến nhưng là một biến đặc biệt, có thể lưu trữ nhiều dữ liệu một lúc. Một mảng có thể cho ta lưu trữ nhiều dữ liệu trong một biến duy nhất và ta có thể truy xuất(lấy dữ liệu) đó ra thông qua các chỉ số.
Ví dụ như chúng ta có một hộp kẹo. Hộp kẹo đó chính là mảng còn kẹo trong hộp chính là các giá trị mà có trong mảng. Ta có thể lấy những chiếc kẹo với màu, vị khác nhau đấy chính là việc mà ta truy xuất dữ liệu của mảng thông qua các chỉ số.
2. Tại sao lại sử dụng mảng trong PHP
Mảng sẽ giúp ta dễ dàng kéo dài nội dung mà vẫn tiết kiệm bộ nhớ. Ngoài ra mảng sẽ giúp ta dễ dàng hơn với việc thao tác các thông tin liên quan đến nhau và việc viết code của chúng ta sẽ dễ nhìn và đẹp mắt hơn.
3. Mảng được thiết lập với chỉ mục trong PHP
Mảng được thiết lập với chỉ mục ở đây có nghĩa là trong mảng một chỉ mục. Đây chính là mảng một chiều mà tôi đã nói trong bài trước.
3.1. Cách tạo mảng
Ta sẽ có 2 cách tạo với chỉ mục
Cách 1: Tạo mảng index trực tiếp
Cú pháp:
$ten_mang = array(giatri1,giatri2,giatri3,...);
Hoặc
$ten_mang = array(n => giaTri, ...);
Trong đó:
- $ten_mang : là tên của mảng đó
- Giatri1, giatri2, giatri3 : là các giá trị được gán cho phần tử của mảng.
- n : là số chỉ mục truy cập của phần tử.
Ví dụ: ta sẽ tạo một mảng số nguyên
$mang_so_nguyen = array(1, 2, 3, 4, 5, 6);
Ví dụ 2: ta sẽ tạo một mảng về các khóa học lập trình chẳng hạn
$laptrinhtudau = array("HTML", "CSS", "JS", "PHP");
Cách 2: Tạo mảng thủ công
Cú pháp:
$ten_mang[0] = "giatri1"; $ten_mang[1] = "giatri2"; $ten_mang[2] = "giatri3"; $ten_mang[3] = "giatri4";
Ví dụ:
$laptrinhtudau[0] = "HTML"; $laptrinhtudau[1] = "CSS"; $laptrinhtudau[2] = "JS"; $laptrinhtudau[3] = "PHP";
3.2. Cách gọi giá trị trong mảng chỉ mục
Để gọi ra các giá trị trong mảng ta chỉ cần sử dụng một vòng lặp for(sẽ được học ở những bài sau) và hàm count(giúp ta trả lại chiều dài-số phần tử của mảng)
Ví dụ:
<?php $laptrinhtudau = array("HTML", "CSS", "JS", "PHP"); $length = count($laptrinhtudau); // Lấy chiều dài mảng for($i = 0; $i < $length; $i++) { echo $laptrinhtudau[$i]."<br>"; } ?>
Ta cũng có thể gọi từ giá trị trong mảng ra một cách dễ dàng
<?php $laptrinhtudau = array("HTML", "CSS", "JS", "PHP"); echo $laptrinhtudau[1]; ?>
4. Mảng liên kết trong PHP
4.1. Cách tạo mảng
Ta cũng có 2 cách giống như tạo mảng với chỉ mục
Cách 1: Tạo trực tiếp với cú pháp
$ten_mang = array('key' => value);
Cách 2 : Tạo thủ công với cú pháp:
$ten_mang["key"] = value;
$ten_mang : là tên của mảng.
Key : là giá trị được gán cho phần tử mảng.
Value : giá trị được gán cho phần tử mảng.
Ví dụ: ta sẽ tạo một mảng để phân định giới tính sinh viên
<?php $sinhVien = array("Thành" => "Nam", "Sơn" => "Nam", "Nam" => "Nữ"); echo "Nam là " . $sinhVien["Nam"]; ?>
Mảng kết hợp này sẽ thích hợp cho ta khi lấy dữ liệu từ cơ sở dữ liệu.
4.2. Cách gọi giá trị mảng liên kết.
Để gọi giá trị mảng liên kết ta sẽ sử dụng vòng lặp foreach
Ví dụ:
<?php $laptrinhtudau = array("HTML"=>"1 tháng", "CSS"=>"2 tuần", "JS"=>"2 tháng", "PHP"=>"3 tháng"); foreach($laptrinhtudau as $key=>$value) { echo $key." học ".$value."<br>"; } ?>
Ta cũng có thể gọi từng giá trị trong mảng
Ví dụ:
<?php $laptrinhtudau = array("HTML"=>"1 tháng", "CSS"=>"2 tuần", "JS"=>"2 tháng", "PHP"=>"3 tháng"); echo $laptrinhtudau["PHP"]; ?>
5. Mảng đa chiều trong PHP
Mảng đa chiều bản chất là các mảng nằm trong mảng. Có nghĩa là các mảng nhỏ sẽ nằm trong một mảng lớn. Ưu điểm của mảng này là giúp ta nhóm các dữ liệu có liên quan với nhau lại nhưng vẫn có thể chia tách rõ ràng các dữ liệu đó thành các nhóm nhỏ hơn. Ta có thể có các mảng có độ sâu từ hai, ba, bốn, năm,… Nhưng gần như ta chỉ có mảng sâu ba cấp vì nếu mảng sâu hơn thì ta rất khó quản lý được nó.
Đối với mảng hai chiều thì ta cần tới hai chỉ số để chọn một phần tử. Mảng ba chiều thì là ba chỉ số. Tương tự với mảng bốn, năm chiều,…
Tôi sẽ nói về mảng hai chiều để các bạn hiểu sâu và kỹ hơn, chỉ cần hiểu kỹ được thì các mảng khác thì cũng tương tự và dễ dàng thôi.
5.1. Cách tạo mảng
Tôi sẽ dùng một bảng sau để diễn giải về mảng 2 chiều
Môn học | Thời gian | Độ khó |
---|---|---|
HTML | 1 tháng | Dễ học |
CSS | 2 tuần | Bình thường |
JS | 2 tháng | Hơi khó học |
PHP | 3 tháng | Nâng cao |
Như các bạn thấy thì ở bảng trên trong môn học sẽ có thêm 2 phần nữa là thời gian học và độ khó. Các bạn có thể hiểu đây chính là cấu trúc mảng hai chiều.
Viết bằng code sẽ như sau:
<?php $laptrinhtudau = array( array("HTML","1 tháng", "dễ học"), array("CSS","2 tuần", "bình thường"), array("JS","2 tháng", "hơi khó học"), array("PHP","3 tháng", "nâng cao") ); print_r($laptrinhtudau); //in ra cấu trúc của mảng ?>
5.2. Cách gọi giá trị của mảng đa chiều
Để có thể truy cập vào mảng thì ta phải trỏ đến 2 chỉ số(số hàng và số cột). Ta sẽ đặt vòng lặp for trong một vòng lặp for khác để lấy các phần tử của mảng. Vòng lặp for ngoài giúp ta lấy chiều dài mảng mẹ, còn vòng lặp for trong giúp ta lấy chiều dài mảng con.
Ví dụ:
<?php $laptrinhtudau = array( array("HTML","1 tháng", "dễ học"), array("CSS","2 tuần", "bình thường"), array("JS","2 tháng", "hơi khó học"), array("PHP","3 tháng", "nâng cao") ); $length = count($laptrinhtudau); // Lấy chiều dài mảng for($row = 0; $row < $length; $row++) { $length_sub = count($laptrinhtudau[0]); // Lấy chiều dài mảng con for($col = 0; $col < $length_sub; $col++) { echo $laptrinhtudau[$row][$col]." "; } echo "<br>"; } ?>
Lưu ý
- Với mảng bao nhiêu chiều ta sẽ lồng bấy nhiêu vòng lặp.
- Nếu mảng con có cùng phần tử thì chiều dài mảng con bất kỳ sẽ là chiều dài các mảng con còn lại.
- Trường hợp nếu mảng con có phần tử khác nhau thì khi sử dụng vòng lặp sẽ khác nhau.
Ta cũng có thể truy xuất giá trị đơn trong mảng
<?php $laptrinhtudau = array( array("HTML","1 tháng", "dễ học"), array("CSS","2 tuần", "bình thường"), array("JS","2 tháng", "hơi khó học"), array("PHP","3 tháng", "nâng cao") ); echo $laptrinhtudau[0][0]." ".$laptrinhtudau[0][1]." ".$laptrinhtudau[0][2]; ?>
Trong đó:
- [0][0] ứng với giá trị hàng đầu tiên của cột đầu tiên.
- [0][1] ứng với giá trị hàng đầu tiên cột thứ 1
- [0][2] ứng với giá trị hàng đầu tiên cột thứ 2
6. Sử dụng toán tử để thao tác với mảng trong PHP
6.1. Toán tử cộng để cộng 2 mảng
Ta sẽ dùng dấu + để cộng được 2 mảng với nhau
Ví dụ:
$x = array('id' => 1); $y = array('value' => 10); $z = $x + $y;
6.2. So sánh 2 mảng
Ta có thể sử dụng các toán tử so sánh để so sánh 2 mảng như: “==” , “===” , “!=” , “<>”
Ví dụ:
$x = array("id" => 1); $y = array("id" => "1"); if($x != $y) { echo "true"; } else { echo "false"; }
Các bạn có thể tự thay bằng toán tử khác để xem nhé!
7. Tìm hiểu về Array Function trong PHP – hàm về mảng
Tôi sẽ đưa ra một số hàm về mảng hay dùng để các bạn có thể biết và sử dụng
- Count() : đếm số lượng phần tử trong mảng.
- Is_array() : kiểm tra tồn tại của mảng
- Sort() : sắp xếp các mảng theo giá trị trong mảng(là số thì theo thứ tự tăng dần, là chữ sẽ theo bảng chữ cái). Và đầu ra hàm này là một mảng chỉ số.
- Ksort() : sắp xếp mảng sử dụng key.
- Asort() : sắp xếp mảng bằng giá trị.