Mảng trong PHP

Mảng là kiểu dữ liệu cho phép chúng ta lưu trữ nhiều giá trị thuộc nhiều kiểu dữ liệu khác nhau trong nó bao gồm việc lưu trữ giá trị của một hoặc nhiều mảng khác.
 

Mảng Là Gì

Mảng là kiểu dữ liệu cho phép chúng ta lưu trữ nhiều giá trị trong nó bao gồm việc lưu trữ giá trị của một hoặc nhiều mảng khác.

Mảng Trong PHP

Mảng trong PHP được chia thành 3 loại khác nhau đó là:

  • Mảng đánh số thứ tự (indexed array)
  • Mảng kết hợp (associative array)
  • Mảng đa chiều (multidimensional array)

Cả 3 loại trên đều có chung một cú pháp khi tạo mảng.

Cú Pháp Tạo Mảng

Để tạo mảng trong PHP chúng ta có thể sử dụng cú pháp:

array()

Với các phiên bản PHP từ 5.4 trở về sau chúng ta có thể sử dụng cú pháp ngắn gọn hơn như sau:

[]

Ví dụ:

$top_car_brands = array("Toyota", "Honda", "BMW", "Ford", "Hyundai");
$top_car_brands =["Toyota", "Honda", "BMW", "Ford", "Hyundai"];

 

Đếm Số Phần Tử Trong Mảng

Để đếm số lượng phần tử trong một mảng PHP chúng ta sử dụng hàm count():

<?php
$top_car_brands =["Toyota", "Honda", "BMW", "Ford", "Hyundai"];
echo count($top_car_brands);
?>

 

Mảng Đánh Số Thứ Tự - Indexed Array

Mảng đánh số thứ tự (indexed array) trong PHP là loại mảng mà các phần tử được đánh số thứ tự là các số tự nhiên:

Mảng dưới đây là một mảng đánh số thứ tự với các khoá là các số tự nhiên liên tiếp bắt đầu từ 0:

<?php 
$top_car_brands = array("Toyota", "Honda", "BMW", "Ford", "Hyundai");
print_r($top_car_brands);
?>

 

Chúng ta cũng có thể sử dụng khoá là số tự nhiên nhưng không liên tiếp nhau:

$top_car_brands = array("Toyota", "Honda", 2=> "BMW", 4=> "Hyundai");
$top_car_brands = array("Toyota", "Honda", 4=> "Hyundai", "BMW");

 

Để lặp qua các phần tử trong mảng đánh số thứ tự chúng ta thường sử dụng vòng lặp for:

<?php 
$top_car_brands =["Toyota", "Honda", "BMW", "Ford", "Hyundai"];
$length = count($top_car_brands);

for ($i = 0; $i < $length; $i++) {
    echo "Hãng xe đứng số " . ($i + 1) . " là: {$top_car_brands[$i]}<br>";
}
?>

 

Mảng Kết Hợp - Associative Array

Mảng kết hợp (associative array) trong PHP là loại mảng sử dụng khoá là giá trị tuỳ ý thay vì các số tự nhiên liên tiếp.

<?php
$top_car_brands = [
    "Toyota" => "Japan",
    "Honda" => "Japan",
    "BMW" => "German",
    "Ford" => "USA",
    "Hyundai" => "Korea",
];

print_r($top_car_brands);
?>

 

Để lặp qua từng phần tử trong mảng kết hợp chúng ta thường sử dụng foreach:

<?php
foreach ($top_car_brands as $brand => $country) {
    echo "$brand là hãng xe của $country<br>";
}
?>

 

Trường hợp bạn không cần tới khoá mà chỉ cần tới giá trị của phần tử:

<?php
foreach ($top_car_brands as $country) {
    echo "$country<br>";
}
?>

 

Mảng Đa Chiều (Multidimensional Array)

Mảng đa chiều (multidimensional array) là loại mảng mà nó chứa một mảng khác bên trong nó:

<?php
$students = [
    [
        'student_code' => 'MSSV_K12_0001',
        'name' => 'Nguyễn Văn An',
        'gender' => 'Nam',
        'age' => 22,
    ],
    [
        'student_code' => 'MSSV_K12_0002',
        'name' => 'Lê Thị Bình',
        'gender' => 'Nữ',
        'age' => 23,
    ],
];

print_r($students);
print_r($students[0]);
print_r($students[1]);
?>

 

Giá trị của biến $students là một mảng đa chiều vì các phần tử có giá trị là các mảng khác nhau.

Lặp qua mảng đa chiều trên sử dụng vòng lặp for:

$length = $students;
for ($i = 0; $i < $length; $i++) {
    echo "Sinh viên với mã số {$students[$i]['student_code']} tên là {$students[$i]['name']}<br>";
}

 

Các phần tử của mảng đa chiều có thể được đánh khoá tự do giống như mảng kết hợp:

<?php
$students = [
    'MSSV_K12_0001' => [
        'name' => 'Nguyễn Văn An',
        'gender' => 'Nam',
        'age' => 22,
    ],
    'MSSV_K12_0002' => [
        'name' => 'Lê Thị Bình',
        'gender' => 'Nữ',
        'age' => 23,
    ],
];

print_r($students);
?>

 

Lặp qua mảng đa chiều trên sử dụng vòng lặp foreach:

foreach ($students as $student_code => $student_info) {
    echo "Sinh viên với mã số {$student_code} tên là {$student_info['name']}<br>";
}

https://www.codehub.vn/PHP-Co-Ban/Mang/Vi-Du/Lap-qua-mang-da-chieu-su-dung-vong-lap-foreach-trong-PHP

Thay Đổi Giá Trị Của Phần Tử trong Mảng

Để thay đổi giá trị của phần tử trong mảng chúng ta sử dụng toán tử gán giá trị cho phần tử đó:

<?php 
    $top_car_brands =["Toyota", "Honda", "BMW", "Ford", "Hyundai"];
        $top_car_brands[4] = "Mercedes";
    print_r($top_car_brands);
?>

 

Thêm Phần Tử Vào Mảng

Để thêm phần tử vào mảng chúng ta sử dụng toán tử gán giá trị với khoá tương ứng cho phần tử được thêm vào:

<?php 
    $top_car_brands =["Toyota", "Honda", "BMW", "Ford", "Hyundai"];
        $top_car_brands[5] = "Mercedes";
    print_r($top_car_brands);
?>

 

Thêm Phần Tử Vào Cuối Mảng

Khi thêm phần tử vào mảng mà không sử dụng khoá cho phần tử này thì nó sẽ tự động được thêm vào sau phần tử cuối mảng trong mảng hiện tại:

<?php 
    $top_car_brands =["Toyota", "Honda", "BMW", "Ford", "Hyundai"];
        $top_car_brands[5] = "Mercedes";
    print_r($top_car_brands);
?>

 

Xoá Phần Tử trong Mảng

Để xoá phần tử trong một mảng cho trước, chúng ta sử dụng hàm unset():

<?php 
    $top_car_brands =["Toyota", "Honda", "BMW", "Ford", "Hyundai", "Mercedes"];
        unset($top_car_brands[5]);
    print_r($top_car_brands);
?>

 

Mảng Rỗng

Mảng rỗng là mảng mà không chứa bất cứ phần tử nào:

<?php
    $empty_array = [];
    print_r($empty_array);
?>

 

Khi gọi hàm count() trên mảng rỗng giá trị trả về là 0 và chúng ta hoàn toàn có thể thêm phần tử vào mảng rỗng.