Laravel 11 cung cấp một loạt các Array Helper (trợ giúp xử lý mảng) giúp việc thao tác với mảng trở nên đơn giản và hiệu quả hơn. Những phương thức này thuộc class Arr trong Laravel, cho phép bạn dễ dàng thực hiện các thao tác phức tạp trên mảng một cách nhanh chóng. Trong bài viết này, chúng ta sẽ cùng tìm hiểu về cách sử dụng các phương thức như Arr::accessible(), Arr::add(), Arr::collapse(), và nhiều phương thức khác qua các ví dụ thực tế.

1. Phương thức Arr::accessible()

Phương thức Arr::accessible() kiểm tra xem một giá trị có thể được truy cập như một mảng hay không, tức là giá trị đó có thể là một mảng hoặc một đối tượng triển khai ArrayAccess.

Cách sử dụng:

php
use Illuminate\Support\Arr;

$array = [1, 2, 3];
$isAccessible = Arr::accessible($array); // true

Ví dụ với object không triển khai ArrayAccess:

php
$object = new stdClass();
$isAccessible = Arr::accessible($object); // false

2. Phương thức Arr::add()

Phương thức Arr::add() thêm một phần tử vào mảng nếu khóa đó chưa tồn tại.

Cách sử dụng:

php
$array = ['name' => 'John'];
$result = Arr::add($array, 'age', 30);

print_r($result);

Kết quả:

php
['name' => 'John', 'age' => 30]

3. Phương thức Arr::collapse()

Phương thức Arr::collapse() hợp nhất nhiều mảng con thành một mảng duy nhất.

Cách sử dụng:

php
$array = [[1, 2], [3, 4], [5, 6]];
$collapsed = Arr::collapse($array);

print_r($collapsed);

Kết quả:

php
[1, 2, 3, 4, 5, 6]

4. Phương thức Arr::crossJoin()

Phương thức Arr::crossJoin() tạo ra mọi tổ hợp có thể của các giá trị từ các mảng khác nhau.

Cách sử dụng:

php
$array1 = [1, 2];
$array2 = ['a', 'b'];
$result = Arr::crossJoin($array1, $array2);

print_r($result);

Kết quả:

php
[
    [1, 'a'],
    [1, 'b'],
    [2, 'a'],
    [2, 'b']
]

5. Phương thức Arr::divide()

Phương thức Arr::divide() tách mảng thành hai mảng con: một mảng chứa tất cả các khóa và một mảng chứa tất cả các giá trị.

Cách sử dụng:

php
$array = ['name' => 'John', 'age' => 30];
[$keys, $values] = Arr::divide($array);

print_r($keys);   // ['name', 'age']
print_r($values); // ['John', 30]

6. Phương thức Arr::dot()

Phương thức Arr::dot() chuyển đổi một mảng đa chiều thành một mảng phẳng, trong đó các khóa được "điểm" (dot notation) để chỉ ra cấu trúc con.

Cách sử dụng:

php
$array = ['user' => ['name' => 'John', 'age' => 30]];
$flattened = Arr::dot($array);

print_r($flattened);

Kết quả:

php
['user.name' => 'John', 'user.age' => 30]

7. Phương thức Arr::except()

Phương thức Arr::except() trả về một mảng mới, loại bỏ các phần tử có khóa chỉ định.

Cách sử dụng:

php
$array = ['name' => 'John', 'age' => 30, 'email' => 'john@example.com'];
$filtered = Arr::except($array, ['age']);

print_r($filtered);

Kết quả:

php
['name' => 'John', 'email' => 'john@example.com']

8. Phương thức Arr::exists()

Phương thức Arr::exists() kiểm tra xem một khóa cụ thể có tồn tại trong mảng hay không.

Cách sử dụng:

php
$array = ['name' => 'John', 'age' => 30];
$exists = Arr::exists($array, 'name'); // true

9. Phương thức Arr::first()

Phương thức Arr::first() trả về phần tử đầu tiên trong mảng thỏa mãn điều kiện callback.

Cách sử dụng:

php
$array = [100, 200, 300];
$first = Arr::first($array, function ($value) {
    return $value >= 200;
});

echo $first; // 200

10. Phương thức Arr::flatten()

Phương thức Arr::flatten() làm phẳng một mảng đa chiều thành một mảng một chiều.

Cách sử dụng:

php
$array = ['a', ['b', 'c'], ['d' => ['e', 'f']]];
$flattened = Arr::flatten($array);

print_r($flattened);

Kết quả:

php
['a', 'b', 'c', 'e', 'f']

11. Phương thức Arr::forget()

Phương thức Arr::forget() xóa một phần tử khỏi mảng bằng cách sử dụng notation dấu chấm (dot notation).

Cách sử dụng:

php
$array = ['user' => ['name' => 'John', 'email' => 'john@example.com']];
Arr::forget($array, 'user.email');

print_r($array);

Kết quả:

php
['user' => ['name' => 'John']]

12. Phương thức Arr::get()

Phương thức Arr::get() lấy giá trị của một khóa cụ thể trong mảng, sử dụng notation dấu chấm để lấy giá trị từ mảng đa chiều.

Cách sử dụng:

php
$array = ['user' => ['name' => 'John', 'age' => 30]];
$name = Arr::get($array, 'user.name');

echo $name; // John

13. Phương thức Arr::has()

Phương thức Arr::has() kiểm tra xem một hoặc nhiều khóa có tồn tại trong mảng hay không, sử dụng notation dấu chấm.

Cách sử dụng:

php
$array = ['user' => ['name' => 'John', 'age' => 30]];
$hasName = Arr::has($array, 'user.name'); // true

14. Phương thức Arr::hasAny()

Phương thức Arr::hasAny() kiểm tra xem có ít nhất một trong những khóa đã cho có tồn tại trong mảng hay không.

Cách sử dụng:

php
$array = ['name' => 'John', 'age' => 30];
$hasAny = Arr::hasAny($array, ['age', 'email']); // true

15. Phương thức Arr::isAssoc()

Phương thức Arr::isAssoc() kiểm tra xem mảng có phải là một mảng liên kết (associative array) hay không.

Cách sử dụng:

php
$array = ['name' => 'John', 'age' => 30];
$isAssoc = Arr::isAssoc($array); // true

16. Phương thức Arr::isList()

Phương thức Arr::isList() kiểm tra xem mảng có phải là mảng chỉ mục (indexed array) hay không.

Cách sử dụng:

php
$array = [1, 2, 3];
$isList = Arr::isList($array); // true

17. Phương thức Arr::join()

Phương thức Arr::join() nối các phần tử của mảng thành chuỗi, sử dụng một chuỗi phân cách.

Cách sử dụng:

php
$array = ['John', 'Jane', 'Doe'];
$joined = Arr::join($array, ', ', ' và ');

echo $joined; // John, Jane và Doe

18. Phương thức Arr::keyBy()

Phương thức Arr::keyBy() ánh xạ lại các phần tử của mảng dựa trên một khóa cụ thể.

Cách sử dụng:

php
$array = [
    ['id' => 1, 'name' => 'John'],
    ['id' => 2, 'name' => 'Jane'],
];
$keyed = Arr::keyBy($array, 'id');

print_r($keyed);

Kết quả:

php
[
    1 => ['id' => 1, 'name' => 'John'],
    2 => ['id' => 2, 'name' => 'Jane']
]

19. Phương thức Arr::last()

Phương thức Arr::last() trả về phần tử cuối cùng trong mảng thỏa mãn điều kiện callback.

Cách sử dụng:

php
$array = [100, 200, 300];
$last = Arr::last($array, function ($value) {
    return $value >= 200;
});

echo $last; // 300

20. Phương thức Arr::map()

Phương thức Arr::map() lặp qua tất cả các phần tử của mảng và áp dụng một callback.

Cách sử dụng:

php
$array = [1, 2, 3];
$mapped = Arr::map($array, function ($value) {
    return $value * 2;
});

print_r($mapped);

Kết quả:

php
[2, 4, 6]

21. Phương thức Arr::mapSpread()

Phương thức Arr::mapSpread() áp dụng callback với các phần tử được truyền vào theo từng cặp (hoặc nhiều hơn) từ mảng con.

Cách sử dụng:

php
$array = [[1, 2], [3, 4]];
$mapped = Arr::mapSpread($array, function ($a, $b) {
    return $a + $b;
});

print_r($mapped);

Kết quả:

php
[3, 7]

22. Phương thức Arr::mapWithKeys()

Phương thức Arr::mapWithKeys() ánh xạ từng phần tử của mảng với các cặp khóa-giá trị mới.

Cách sử dụng:

php
$array = [
    ['name' => 'John', 'age' => 30],
    ['name' => 'Jane', 'age' => 25],
];

$mapped = Arr::mapWithKeys($array, function ($item) {
    return [$item['name'] => $item['age']];
});

print_r($mapped);

Kết quả:

php
['John' => 30, 'Jane' => 25]

Kết luận

Trong bài viết này, chúng ta đã khám phá cách sử dụng một số Array Helper quan trọng trong Laravel 11 như Arr::add(), Arr::collapse(), Arr::get(), Arr::map(), và nhiều phương thức khác. Những phương thức này giúp bạn dễ dàng thao tác với mảng và dữ liệu đa chiều trong Laravel. Hãy tiếp tục theo dõi để khám phá thêm các tính năng mạnh mẽ khác của Laravel!

Mời bạn xem tiếp phần 2 tại đây: Phần 2