1. Hàm array_chunk() trong PHP

Hàm array_chunk() trong PHP giúp ta tách một mảng thành mảng mới với nhiều đoạn khác nhau, tùy vào giá trị ta muốn tách. Số phần tử của mảng mới sẽ tùy thuộc vào giá trị mà ta nhập vào. Đến cuối cùng, nếu số phần tử còn lại không đủ so với giá trị mà ta nhập vào thì mảng sẽ tự động lấy giá trị còn lại của mảng ban đầu.

Ta có thể hình dung qua ví dụ sau. Ta có một mảng $n = array(1,2,3,4,5,6,7,8,9,10);

Khi sử dụng hàm array_chunk() và nhập vào tham số là 4 (cú pháp sử dụng sẽ được nói ở phần dưới). Lúc này ta có thể hiểu là ta muốn cắt mảng n này thành mảng mới thành các nhóm mà mỗi nhóm sẽ có 4 phần tử trong mảng cũ. Như vậy ta có thể hình dung nhóm 1 có các phần tử là (1,2,3,4). Nhóm 2 sẽ có các phần tử là (5,6,7,8). Đến nhóm cuối cùng này thì số phần tử chỉ là 2 không đủ số lượng mà ta nhập vào. Tuy nhiên nó vẫn được tạo và lấy những phần tử còn lại là (9,10).

2. Cú pháp hàm array_chunk() trong PHP

Ta có cú pháp hàm array_chunk() trong PHP :

array array_chunk(array $array , int $size [, bool $preserve_keys = false ] )

Trong đó:

  • $array là mảng cần chuyển đổi
  • $size số phần tử sẽ được gộp lại
  • $preserve_keys có 2 giá trị TRUE hoặc FALSE, giá trị mặc định là FALSE. Nếu ta thiết lập TRUE thì các phần tử trong mỗi nhóm của mảng mới sẽ được đánh chỉ mục tăng dần, ngược lại nếu bằng FALSE thì sau mỗi nhóm các phần tử sẽ tính lại chỉ số 0

Hàm array_chunk() sẽ trả kết quả là một mảng mà ta đã cắt và phân nhóm và số phần tử của nó phụ thuộc vào tham số $size ở trên. Hay kết quả trả về chính là một mảng đa chiều với số phần từ đã tách.

Ví dụ: ta sẽ lấy luôn mảng n ở ví dụ trên

<?php
$n = array(1,2,3,4,5,6,7,8,9,10);
echo '<pre>';
print_r(array_chunk($n,4));
?>

Kết quả

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
        )

    [1] => Array
        (
            [0] => 5
            [1] => 6
            [2] => 7
            [3] => 8
        )

    [2] => Array
        (
            [0] => 9
            [1] => 10
        )

)

3. Ví dụ về hàm array_chunk() trong PHP

Ví dụ 1: Chia mảng ban đầu thành các nhóm có 2 phần tử mảng ban đầu

<?php
$laptrinh = array("PHP","Java","Python","HTML","CSS","C");
echo '<pre>';
print_r(array_chunk($laptrinh,2));
?>

Kết quả

Array
(
    [0] => Array
        (
            [0] => PHP
            [1] => Java
        )

    [1] => Array
        (
            [0] => Python
            [1] => HTML
        )

    [2] => Array
        (
            [0] => CSS
            [1] => C
        )

)

Ta có thể thấy các phần tử của mỗi nhóm được reset lại thành số 0 khi qua phần tử kết tiếp.

Ví dụ 2: chia mảng thành nhóm phần tử có 2 phần tử của mảng ban đầu và giữ nguyên key ban đầu

<?php
$laptrinh = array("PHP"=>"5","Python"=>"4","Java"=>"2","HTML"=>"1");
echo '<pre>';
print_r(array_chunk($laptrinh,2,true));
?>

Kết quả

Array
(
    [0] => Array
        (
            [PHP] => 5
            [Python] => 4
        )

    [1] => Array
        (
            [Java] => 2
            [HTML] => 1
        )

)

Khác với ví dụ 1 thì ở ví dụ này tên của key sẽ được giữ nguyên. Có nghĩa là các phần tử của mỗi nhóm sẽ có số chỉ mục liên tiếp nhau. Giống như ví dụ này:

<?php
$input_array = array('a', 'b', 'c', 'd', 'e');
 
echo '<pre>';
 
print_r(array_chunk($input_array, 2, true));
?>

Kết quả

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [2] => c
            [3] => d
        )

    [2] => Array
        (
            [4] => e
        )

)