Mảng trong PHP
NỘI DUNG BÀI VIẾT
Mảng là một cấu trúc dữ liệu mà lưu giữ một hoặc nhiều kiểu giá trị giống nhau trong một giá trị đơn. Bài viết này chúng ta cùng tìm hiểu vể khái niệm mảng trong PHP nhé.
Khái niệm về mảng
Mảng là một biến đặc biệt, trong nó giữ nhiều giá trị. Mỗi giá trị trong mảng được gọi là phần tử
của mảng. Các phần tử trong mảng được truy xuất thông qua tên biến và ký hiệu [index].
Trong đó index
được gọi là chỉ số của phần tử, chỉ số này có thể là một số nguyên hay là một chuỗi … tùy thuộc vào loại mảng mà bạn khởi tạo ở phần sau.
Khi mảng không có phần tử nào được gọi là mảng rỗng
, ta có thể tạo ra một biến mảng rỗng để sau này thêm các phần tử vào. Cú pháp
$mang1 = array(); // tạo một mảng rỗng $mang2 = []; // tạo một mảng rỗng - cú pháp này dễ đọc hơn.
Mảng trong PHP
Numeric Array
Mảng dạng số là mảng mà mỗi phần tử của nó có một chỉ số là số nguyên. Một biến mảng dạng này chỉ số sẽ gán một cách tự động:
Chỉ số của mảng bao giờ cũng bắt đầu từ 0
chứ không phải 1
Khởi tạo mảng và đưa phần tử vào mảng: giá sử khởi tạo mảng lưu danh sách tên khách hàng
<?php $names = ["An", "Minh", "Long"]; // khởi tạo mảng $name, đưa vào nó 3 phần tử var_export($names); // export biến mảng
Chạy thử, kết quả export của biến $names
array ( 0 => 'An', 1 => 'Minh', 2 => 'Long', )
Như vậy phần tử có chỉ số 0
thì giá trị là 'An'
, chỉ số 1
giá trị là 'Minh'
Thêm phần tử vào mảng bạn có thể đưa các phần tử vào mảng bằng cách viết
$bienmang[index] = $giatri; // thêm vào phần tử với chỉ số index, phần tử nếu là mới // thêm sẽ nằm cuối, dù giá trị index bao nhiêu $bienmang[] = $giatri; // thêm vào cuối phần tử mới, chỉ số phần tử này bằng chỉ số lớn nhất cộng 1 // nếu đây là phần tử đầu tiên của mảng thì chỉ số sẽ là 0
Hãy nhớ là các chỉ số phải là số nguyên, mỗi biến mảng sẽ lưu một giá trị để đánh chỉ số, giá trị này luôn bằng chỉ số lớn nhất của index số nguyên thêm vào, nếu thêm phần tử bằng []=
thì giá trị này sẽ tăng thêm 1, nếu thêm bằng [index]=
giá trị này sẽ bằng index
nếu index là lớn nhất so với các index có sẵn trong mảng. Hãy xem ví dụ sau, tạo biến mảng chỉ thêm các phần tử:
<?php unset($names); // hủy biến nếu biến đang có để khởi tạo từ đầu $names[20] = "A"; $names[2] = "B"; $names[1] = "C"; var_export($names); /* array ( 20 => 'A', 1 => 'B', 2 => 'C', ) */ $names[] = "D"; //thêm vào cuối var_export($names); /* array ( 20 => 'A', 2 => 'B', 1 => 'C', 21 => 'D', )*/
Từ ví dụ trên bạn thấy, chỉ số index
không phải là thứ tự sắp xếp các phần tử trong mảng. Chỉ số không liên quan đến số lượng phần tử trong mảng (nhiều người nhầm lẫn). Ví dụ mảng trên, có phần 4 phần tử, nhưng chỉ số đã nhảy đến 21. Tuy nhiên nếu mảng chỉ thêm vào bằng cách []
và các phần tử không bị xóa (unset), thì có sự liên quan.
Các phần tử của mảng này (giá trị) có thể lưu trữ bất kỳ loại biến nào, có thể là chuỗi
, số nguyên
, một mảng khác
, boolean
… Ví dụ:
$arrayData[0] = '<strong>Mèo</strong>'; $arrayData[1] = '4'; $arrayData[2] = 'chân'; echo "$arrayData[0] có $arrayData[1] $arrayData[2]"; // In ra: // Mèo có 4 chân
Duyệt mảng trong PHP
Cách phổ biến nhất là dùng lệnh foreach
, có hai trường hợp mỗi lần lặp trích xuất ra giá trị phần tử và trích xuất cả giá trị và chỉ số index
// vòng lặp, lấy giá trị từng phần tử foreach ($bienmang as $value) { var_dump($value); } // vòng lặp, lấy giá trị và chỉ số từng phần tử foreach ($bienmang as $key => $value) { var_dump($key, $value); }
Ví dụ:
<?php $names = ["An", "Minh", "Nguyên"]; foreach ($names as $k => $name) { echo "chỉ số $k; giá trị $name", PHP_EOL; } /* chỉ số 0; giá trị An chỉ số 1; giá trị Minh chỉ số 2; giá trị Nguyên */ foreach ($names as $name) { echo "$name "; } //An Minh Nguyên
Một số hàm của mảng trong PHP
Hàm is_array($bien)
kiểm tra xem $bien
có phải là mảng. count($bienmang)
trả vế số lượng phần tử trong mảng. Nếu mảng số – khởi tạo bằng cách liệt kê các giá trị – thì chỉ số và số phần tử có sự liên hệ, nên trường hợp này duyệt được bằng vòng lặp for
$names = ["An", "Minh", "Nguyên"]; // mảng số theo thứ tự $leng = count($names); echo "Số phần tử là: " . $leng, PHP_EOL; // Lặp từ phần tử cuối lên đầu for ($i = $leng -1; $i >= 0; $i--) { echo $names[$i], ' '; } /* Số phần tử là: 3 Nguyên Minh An */
Associative Arrays
Mảnh kết hợp này thì tên chỉ số là một giá trị nào đó do bạn gán vào, có thể là một string
hay một số …
Cũng có hai cách khởi tạo mảng này, ví dụ:
<?php $ngay_thu = [ 'Mon' => "Thứ Hai", 'Tue' => "Thứ Ba", 'Wed' => "Thứ Tư", 'Thu' => "Thứ Năm" ]; foreach ($ngay_thu as $k => $v) echo "$k ($v)", PHP_EOL; /* Mon (Thứ Hai) Tue (Thứ Ba) Wed (Thứ Tư) Thu (Thứ Năm)*/
Ở ví dụ trên chỉ số không còn là số nữa mà là các chuỗi Mon, Tue ...
tương ứng với chỉ số này là giá trị Thứ hai, Thứ ba
. Truy cập đến phần tử chuỗi vẫn dùng ký hiệu $bien[index]
trong đó index
là chỉ số (có thể là chuỗi hay số tùy vào kiểu index cho phần tử đó)
echo $ngay_thu['Wed']; //Sẽ in ra : Thứ 4 Nguồn: https://xuanthulab.net/mang-trong-php.html
Leave a Reply