Site logo
Authors
  • avatar Nguyễn Đức Xinh
    Name
    Nguyễn Đức Xinh
    Twitter
Published on
Published on

Tìm hiểu mảng trong PHP(PHP Array)

Mảng PHP là một trong những cấu trúc dữ liệu mạnh mẽ nhất trong PHP, cho phép các nhà phát triển lưu trữ, thao tác và quản lý dữ liệu một cách hiệu quả. Cho dù bạn đang xử lý các danh sách đơn giản hay các mảng đa chiều phức tạp, hiểu các hàm mảng tích hợp sẵn của PHP có thể cải thiện đáng kể năng suất mã hóa của bạn. Trong hướng dẫn này, chúng tôi sẽ đề cập đến các hàm thao tác mảng PHP phổ biến và cung cấp các mẹo hiệu suất cần thiết.

Mảng PHP là gì?

Trong PHP, một mảng là một cấu trúc dữ liệu lưu trữ nhiều giá trị dưới một tên biến duy nhất. Những giá trị này có thể thuộc bất kỳ loại nào—chuỗi, số nguyên, đối tượng, hoặc thậm chí là các mảng khác. Mảng trong PHP là động, nghĩa là chúng có thể mở rộng hoặc thu nhỏ khi cần thiết, và chúng hỗ trợ cả khóa chỉ mục và khóa liên kết.

Mảng đơn giản - Mảng chỉ mục

Mảng chỉ mục: Mảng với các khóa số. Một mảng đơn giản là một tập hợp tuyến tính của các giá trị, thường được đánh chỉ mục bằng số bắt đầu từ 0. PHP hỗ trợ hai cú pháp: cú pháp truyền thống array() và cú pháp ngắn hiện đại [].

Cú pháp

// Cú pháp truyền thống
$simpleArray1 = array("Apple", "Banana", "Orange");

// Cú pháp ngắn (PHP 5.4+)
$simpleArray2 = ["Apple", "Banana", "Orange"];

Ví dụ

$fruits = ["Apple", "Banana", "Orange"];

// Truy cập các phần tử
echo $fruits[1]; // Output: Banana
// Cập nhật một phần tử
$fruits[2] = "Mango";

Mảng liên kết (Cặp key-value)

Mảng liên kết sử dụng các khóa được đặt tên thay vì các chỉ mục số.

Cú pháp

$ages = [
    "Alice" => 25,
    "Bob" => 30,
    "Charlie" => 35
];
echo $ages["Bob"]; // Output: 30

Mảng lồng nhau (Mảng đa chiều)

Một mảng lồng nhau, hay mảng đa chiều, là một mảng chứa một hoặc nhiều mảng khác làm phần tử của nó. Điều này hữu ích để đại diện cho các cấu trúc dữ liệu phức tạp như bảng hoặc ma trận.

Cú pháp

$nestedArray = [
    "fruits" => ["Apple", "Banana", "Orange"],
    "vegetables" => ["Carrot", "Broccoli"]
];

Ví dụ

$students = [
    "John" => [
        "age" => 20,
        "grades" => [85, 90, 88]
    ],
    "Jane" => [
        "age" => 22,
        "grades" => [92, 87, 95]
    ]
];

// Truy cập các giá trị lồng nhau
echo $students["John"]["grades"][1]; // Output: 90
<?php
$matrix = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);

// Truy cập các phần tử
echo $matrix[0][1]; // Output: 2
echo $matrix[2][2]; // Output: 9

$users = [
    [
        'name' => 'John',
        'orders' => [
            ['product' => 'Laptop', 'price' => 1200],
            ['product' => 'Mouse', 'price' => 25]
        ]
    ],
    [
        'name' => 'Jane',
        'orders' => [
            ['product' => 'Keyboard', 'price' => 80]
        ]
    ]
];

echo $users[0]['orders'][0]['product']; //output: Laptop
?>

Tạo Array trong PHP

$users = []; // Khởi tạo một array rỗng

$fruits = ["Apple", "Banana", "Cherry"];
print_r($fruits);

// Tạo một array lồng nhau
$users = [
    ["name" => "Alice", "role" => "Developer"],
    ["name" => "Bob", "role" => "Designer"]
];

// Create an array with numbers from 0 to 99
$myArray = range(0, 99);

Truy cập phần tử Array

$fruits = ["Apple", "Banana", "Cherry"];
echo $fruits[0]; // Output: Apple

Thêm phần tử vào Array

  • $array[] = value;: để thêm phần tử vào cuối array.
  • array_push(): để thêm phần tử vào cuối array.
  • $array['key'] = value;: để thêm phần tử vào array liên kết.
  • array_unshift(): để thêm phần tử vào đầu array.
  • array_splice(): để chèn phần tử tại một vị trí cụ thể.
<?php
$users = []; // Khởi tạo một array rỗng

// Create: Thêm một user mới
$users[] = ['name' => 'David', 'age' => 30];
array_push($users, ['name' => 'Sarah', 'age' => 25]);
print_r($users); // Output: Array ( [0] => Array ( [name] => David [age] => 30 ) [1] => Array ( [name] => Sarah [age] => 25 ) )

$fruits = ["Banana"];
$fruits[2] = "Apple"; // Thêm "Apple" tại index 2
print_r($fruits); // Output: Array ( [0] => Banana [2] => Apple )

// Thêm phần tử vào đầu array
$fruits = ["Banana", "Orange"];
array_unshift($fruits, "Apple", "Mango");
print_r($fruits); // Output: Array ( [0] => Apple [1] => Mango [2] => Banana [3] => Orange )

// Chèn tại vị trí cụ thể sử dụng array_splice()
$numbers = [10, 20, 30, 40];
array_splice($numbers, 2, 0, 25); // Chèn 25 tại index 2
print_r($numbers); // [10, 20, 25, 30, 40]

Thêm nhiều phần tử vào Array

array_merge(): Để kết hợp các array.

$fruits = ["Apple", "Banana"];
$veggies = ["Carrot", "Broccoli"];
$combined = array_merge($fruits, $veggies);
print_r($combined); // Output: Array ( [0] => Apple [1] => Banana [2] => Carrot [3] => Broccoli )

Sửa đổi phần tử Array

$fruits = ["Apple", "Banana", "Cherry"];
$fruits[1] = "Mango"; // Thay thế "Banana" bằng "Mango"
print_r($fruits);

Xóa phần tử Array

  • unset(): Để xóa phần tử theo key.
  • array_splice(): Để xóa phần tử theo index.
  • array_pop(): xóa phần tử cuối cùng.
  • array_shift(): xóa phần tử đầu tiên.
$fruits = ["Apple", "Banana", "Cherry"];
unset($fruits[1]); // Xóa "Banana"
print_r($fruits); // Output: Array ( [0] => Apple [2] => Cherry )

$numbers = [1,2,3,4,5];
array_splice($numbers, 2, 1); // xóa số 3
print_r($numbers); // Output: Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 )

$numbers = [1,2,3,4,5];
array_pop($numbers); // xóa phần tử cuối cùng
print_r($numbers); // Output: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )

$numbers = [1,2,3,4,5];
array_shift($numbers); // xóa phần tử đầu tiên
print_r($numbers); // Output: Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 )

Copy an Array

$fruits = ["Apple", "Banana", "Cherry"];
$copy = $fruits; // Copy the array
$copy[0] = "Mango";
print_r($fruits); // Output: Array ( [0] => Apple [1] => Banana [2] => Cherry )
print_r($copy); // Output: Array ( [0] => Mango [1] => Banana [2] => Cherry )

Note: In PHP, arrays are copied by value by default. To copy an array by reference, use the & operator.

$fruits = ["Apple", "Banana", "Cherry"];
$copyByRef = &$fruits; // Copy by reference
$copyByRef[0] = "Mango";
print_r($fruits); // Output: Array ( [0] => Mango [1] => Banana [2] => Cherry )
print_r($copyByRef); // Output: Array ( [0] => Mango [1] => Banana [2] => Cherry )

Các hàm thao tác mảng PHP phổ biến

PHP cung cấp một tập hợp phong phú các hàm tích hợp để thao tác mảng. Dưới đây là một số hàm được sử dụng phổ biến nhất với các ví dụ:

count() - Lấy độ dài mảng

$fruits = ["Apple", "Banana", "Orange"];
echo count($fruits); // Output: 3

in_array() - Kiểm tra xem một giá trị có tồn tại

$fruits = ["Apple", "Banana", "Orange"];
if (in_array("Banana", $fruits)) {
    echo "Found Banana!";
}

array_push() - Thêm phần tử vào cuối mảng

$fruits = ["Apple", "Banana"];
array_push($fruits, "Orange", "Mango");
print_r($fruits);
// Output: Array ( [0] => Apple [1] => Banana [2] => Orange [3] => Mango )

array_pop() - Loại bỏ phần tử cuối cùng

$fruits = ["Apple", "Banana", "Orange"];
$lastFruit = array_pop($fruits);
echo $lastFruit; // Output: Orange
print_r($fruits); // Output: Array ( [0] => Apple [1] => Banana )

array_shift() - Loại bỏ phần tử đầu tiên

$fruits = ["Apple", "Banana", "Orange"];
$firstFruit = array_shift($fruits);
echo $firstFruit; // Output: Apple
print_r($fruits); // Output: Array ( [0] => Banana [1] => Orange )

array_unshift() - Thêm phần tử vào đầu mảng

$fruits = ["Banana", "Orange"];
array_unshift($fruits, "Apple", "Mango");
print_r($fruits);
// Output: Array ( [0] => Apple [1] => Mango [2] => Banana [3] => Orange )

array_merge() - Kết hợp các mảng

$fruits = ["Apple", "Banana"];
$veggies = ["Carrot", "Broccoli"];
$combined = array_merge($fruits, $veggies);
print_r($combined);
// Output: Array ( [0] => Apple [1] => Banana [2] => Carrot [3] => Broccoli )

array_keys() - Lấy các khóa của mảng

$ages = ["Alice" => 25, "Bob" => 30];
$names = array_keys($ages);
print_r($names); // Output: Array ( [0] => Alice [1] => Bob )

array_values() - Lấy các giá trị của mảng

$ages = ["Alice" => 25, "Bob" => 30];
$agesList = array_values($ages);
print_r($agesList); // Output: Array ( [0] => 25 [1] => 30 )

array_search() - Tìm khóa của một giá trị

$ages = ["Alice" => 25, "Bob" => 30];
$key = array_search(30, $ages);
echo $key;

array_filter() - Lọc các phần tử của mảng

$numbers = [1, 2, 3, 4, 5, 6];
$evenNumbers = array_filter($numbers, fn($num) => $num % 2 == 0);
print_r($evenNumbers);
// Output: Array ( [1] => 2 [3] => 4 [5] => 6 )

array_map() - Áp dụng một hàm cho mỗi phần tử

$numbers = [1, 2, 3];
$squared = array_map(fn($num) => $num * $num, $numbers);
print_r($squared);
// Output: Array ( [0] => 1 [1] => 4 [2] => 9 )

sort() - Sắp xếp một mảng

$fruits = ["Banana", "Apple", "Cherry"];
sort($fruits);
print_r($fruits); // Output: Array ( [0] => Apple [1] => Banana [2] => Cherry )

rsort() - Sắp xếp một mảng theo thứ tự ngược lại

$fruits = ["Banana", "Apple", "Cherry"];
rsort($fruits);
print_r($fruits); // Output: Array ( [0] => Cherry [1] => Banana [2] => Apple )

usort() - Sắp xếp một mảng bằng cách sử dụng một hàm tùy chỉnh

$fruits = ["Banana", "Apple", "Cherry"];
usort($fruits, fn($a, $b) => strlen($a) <=> strlen($b));
print_r($fruits); // Output: Array ( [0] => Apple [1] => Banana [2] => Cherry )

asort() - Sắp xếp một mảng liên kết theo giá trị

$ages = ["Bob" => 30, "Alice" => 25];
asort($ages);
print_r($ages); // Output: Array ( [Alice] => 25 [Bob] => 30 )

ksort() - Sắp xếp một mảng liên kết theo khóa

$ages = ["Bob" => 30, "Alice" => 25