Mảng là một trong những kiến thức quan trọng trong PHP. Mà chúng ta sẽ phải sử dụng đến nó rất nhiều trong quá trình làm dự án. Nó là định dạng dữ liệu phổ biến mà chúng ta lấy được từ Database.
Bởi vậy, am hiểu về mảng và biết cách vận dụng các hàm xử lý mảng một cách thuần thục, sẽ giúp các bạn giải quyết các bài toán trong thực tế dễ dàng hơn rất nhiều.
Nội dung chính.
1. Tại sao phải dùng mảng
2. Khái niệm về mảng trong PHP
3. Các qui tắc làm việc với mảng trong PHP
4. Các hàm xử lý mảng trong PHP
5. Video tham khảo.
1. Tại sao phải sử dụng mảng
Trước khi tìm hiểu bất kỳ một vấn đề gì mới, chúng ta nên đặt câu hỏi tại sao lại sử dụng nó. Đối vớimảng trong PHP cũng vậy. Tại sao ta phải sử dụng mảng ? Chúng ta cùng tìm hiểu ví dụ sau.
<?php
$a = 5;
$a = 10;
$a = 15;
$a = 20;
echo $a; //kq là 20
Ở ví dụ này, biến $a của chúng ta được gán vào các giá trị là 5, 10, 15 và 20. Nhưng khi in ra màn hình, biến $a của chúng ta chỉ còn lại giá trị là 20.
Vấn đề đặt ra, làm sao để tôi có thể giữ lại được giá trị 5, 10, 15 và 20 mỗi khi được gán với cùng một biến $a. Lúc này chúng ta sẽ sử dụng mảng để lưu trữ các giá trị đó như sau.
<?php
$a = array(5,10,15,20);
Lúc này vấn đề của chúng ta đã được giải quyết.
2. Khái niệm về mảng trong PHP
Mảng là 1 biến danh sách trong PHP cho phép lưu trữ, sắp xếp thứ tự và truy cập nhiều giá trị với cùng một tên biến.
Cú pháp khai báo mảng trong PHP như sau
$tên_biến = array();
$tên_biến = array(value1,value2,...$valueN);
Chúng ta có 2 cách khai báo mảng trong PHP. Khai báo có gán giá trị và khai báo không gán giá trị.
a. Mảng đa chiều.
Mảng đa chiều là mảng mà các phần tử của nó lại là một mảng con.
array
(
[0] => 1
[1] => array
(
[website] => phamkykhoi.info@gmail.com
[address] => Ngõ 68/34, Cầu Giấy, Hà Nội
)
)
3. Các qui tắc làm việc với mảng trong PHP
Để hiểu ra mảng và làm việc tốt với mảng chúng ta phải nắm được các qui tắc trong mảng.
a. Thêm phần tử vào mảng trong PHP.
Để thêm phần tử vào mảng ta có thể thực hiện một trong hai cách sau.
Thêm và không xét khóa cho phần tử được thêm.
<?php
$sinhvien = array();
$sinhvien[] = "Phạm Kỳ Khôi";
$sinhvien[] = "0912.876.421";
Khóa của mảng sinh viên sẽ là 0 và 1
Thêm và có xét khóa cho phần tử được thêm.
<?php
$sinhvien = array();
$sinhvien['name'] = "Phạm Kỳ Khôi";
$sinhvien['phone'] = "0912.876.421";
$sinhvien['email'] = "phamkykhoi.info@gmail.com";
Trong đó name, phone, email là khóa của mảng $sinhvien
Chú ý: Trong cùng một mảng, khóa của mảng có thể là kiểu string và kiểu số. Nếu khóa là kiểu số thì giá trị của nó bắt đầu từ 0 đến N
<?php
$person = array();
$person['fullname'] = "Phạm Kỳ Khiêm";
$person['website'] = "web24h.com.vn";
$person[] = "0912.876.421";
$person[] = 25;
b. Xem cấu trúc của mảng trong PHP
Khi làm việc với mảng, đôi khi chúng ta cần phải xem trước cấu trúc của mảng để giúp việc xử lý dễ ràng hơn. Cấu trúc của một mảng luôn luôn có 2 thành phần là key và value
Để xem cấu trúc của mảng trong PHP ta thực hiện cú pháp sau.
Cách 1.
<?php
echo "<pre>";
print_r($tên_mảng);
echo "</pre>";
Cách 2.
<?php
echo "<pre>";
var_dump($tên_mảng);
echo "</pre>";
c. Lấy giá trị của một phần tử trong mảng
Để lấy giá trị của một phần tử bất kỳ trong mảng, yếu tố quan trọng nhất là chúng ta phải biết khóa của phần tử đó.
Ví dụ.
<?php
$animal = array();
$animal['name'] = "Con mèo";
$animal[] = "Màu đen";
echo $animal['name']; //Kq là Con mèo
echo $animal[0]; // Kq là Màu đen
d. Loại bỏ một phần tử trong mảng
Để loại bỏ một phần tử trong mảng ta sử dụng hàm unset(). Muốn loại bỏ một phần tử trong mảng các bạn phải xác định được khóa của phần từ mà mình muốn loại bỏ.
<?php
$sinhvien = array();
$sinhvien['name'] = "Phạm Kỳ Khôi";
$sinhvien['email'] = "phamkykhoi.info@gmail.com";
$sinhvien['address'] = "Vĩnh Phúc";
echo "<pre>";
print_r($sinhvien);
echo "</pre>";
unset($sinhvien['address']);
echo "<pre>";
print_r($sinhvien);
echo "</pre>";
Kết quả.
e. Ghi đè dữ liệu trong mảng
Khi một mảng có hai khóa trùng trên nhau thì phần tử được thêm vào sau sẽ ghi đè phần tử trước đó.
<?php
$sinhvien = array();
$sinhvien['name'] = "Phạm Kỳ Khôi";
$sinhvien['email'] = "phamkykhoi.info@gmail.com";
$sinhvien['name'] = "Phạm Kỳ Khiêm";
echo $sinhvien['name']; //Kq là "Phạm Kỳ Khiêm"
g. Duyệt mảng trong PHP
Trong PHP để duyệt mảng ta sử dụng vòng lặp Foreach().
<?php
$company = array();
$company = "web24h.com.vn";
$company = "Phạm Kỳ Khôi";
$company = "SUNTECH";
foreach($company as $key=>$value) {
echo $value."<br/>";
}
$key: Khóa của mảng
$value: Giá trị của key tương ứng.
4. Các hàm xử lý mảng trong PHP
Dưới đây là các hàm xử lý mảng thông dụng trong PHP. Ở mỗi hàm tôi đã nêu ra được ý nghĩa của nó. Các bạn có thể theo dõi và thực hành trên máy tính của mình để hiểu hơn về nó.
print_r ($array)
Được dùng để xem cấu trúc của mảng
count ($array)
Trả về giá trị kiểu số nguyên là số phần tử của mảng
array_values ($array)
Trả về một mảng liên tục có các phần tử có giá trị là giá trị lấy từ các phần tử của mảng $array
array_keys ($array)
Trả về một mảng liên tục có các phần tử có giá trị là khóa lấy từ các phần tử của mảng $array.
array_pop ($array)
Loại bỏ phần tử cuối cùng của mảng. Hàm trả về phần tử cuối cùng đã được loại bỏ.
array_push ($array, $val1, $val2, ... , $valn)
Thêm một hoặc nhiều phần tử vào cuối mảng $array. Hàm trả về kiểu số nguyên là số lượng phần tử của mảng $array mới
array_shift ($array)
Loại bỏ phần tử đầu tiên của mảng. Hàm trả về phần tử đầu tiên đã được loại bỏ.
array_unshift ($array, $val1, $val2, ... , $valn)
Thêm một hoặc nhiều phần tử vào đầu mảng $array. Hàm trả về kiểu số nguyên là số lượng phần tử của mảng $array mới
array_flip ($array)
Trả về một mảng có khóa và giá trị được hoán đổi cho nhau so với mảng $array (giá trị thành khóa và khóa thành giá trị)
sort ($array)
Sắp xếp mảng $array theo giá trị tăng dần
array_reverse ($array)
Đảo ngược vị trí các phần tử của mảng
array_merge ($array1, $array2, …, $arrayn)
Nhập 2 hay nhiều mảng thành một mảng duy nhất và trả về mảng mới
array_rand ($array, $number)
Lấy ngâu nhiên $number phần tử từ mảng $array và đưa vào màng mới (lấy giá trị khóa)
array_search ($value,$array)
Tìm phần tử mang giá trị $value trong mảng $array. Trả về khóa của phần tử tìm được.
array_slice ($array, $begin. $finish)
Trích lấy 1 đoạn phần tử của mảng $array từ vị trí $begin đến vị trí $finish. Phần tư đầu tiên (chỉ số 0), phần tử cuối cùng (chỉ số -1 hay count($array) - 1)
array_unique ($array)
Loại bỏ những phần tử trùng nhau trong mảng và trả về mảng mới
implode ($str, $array)
Chuyển các giá trị của mảng $array thành một chuỗi bao gồm các phần tử cách nhau bởi ký tự $str
explode ($delimiter, $str)
Chuyển một chuỗi thành một mảng. Tách chuỗi dựa vào $delimiter, mỗi đoàn tách ra sẽ thành một phần tử của mảng mới
serialize ($value)
Chuyển chuỗi/mảng/đối tượng $value thành một chuỗi đặc biệt để lưu vào cơ sở dữ liệu
unserialize ($value)
Chuyển chuỗi đặc biệt được tạo từ serialize($value) về trạng thái ban đầu
array_key_exists ($key, $array)
Kiểm tra khóa $key có tồn tại trong mảng $array hay không? Nếu có trả về giá trị true.
in_array ($value, $array)
Kiểm tra giá trị $value có tồn tại trong mảng $array hay không? Nếu có trả về giá trị true.
array_diff ($array1, $array2)
Trả về một mảng bao gồm các phần tử có giá trị tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
array_diff_assoc ($array1, $array2)
Trả về một mảng bao gồm các phần tử có khóa tồn tại trong mảng $array1 nhưng không tồn tại trong mảng $array2
array_intersect ($array1, $array2)
Trả về một mảng bao gồm các phần tử giống nhau về giá trị giữa 2 mảng $array1 và $array2
array_intersect_assoc ($array1, $array2)
Trả về một mảng bao gồm các phần tử giống nhau về khóa và giá trị giữa 2 mảng $array1 và $array2
array_combine ($keys, $values)
Tạo một mảng mới có khóa được lấy từ mảng $keys và giá trị được lấy từ mảng $values theo tuần tự (Yêu cầu số phần tử ở 2 mảng phải bằng nhau)
Trên là các hàm xử lý mảng trong PHP rất hay dùng, tôi không thể liệt kê hết các hàm vì cũng có nhiều hàm chưa dùng tới, nếu bạn muốn tìm hiểu thêm các hàm khác thì có thể tham khảo thêm. Bây giờ các bạn hãy thực hành lại trên máy của mình. Chúc các bạn học tốt.