Hướng dẫn php array group by value - nhóm mảng php theo giá trị

Dưới đây là một hàm sẽ lấy một mảng làm đối số đầu tiên và một tiêu chí (hàm chuỗi hoặc chức năng gọi lại) làm đối số thứ hai. Hàm trả về một mảng mới nhóm mảng theo yêu cầu.

/**
 * Group items from an array together by some criteria or value.
 *
 * @param  $arr array The array to group items from
 * @param  $criteria string|callable The key to group by or a function the returns a key to group by.
 * @return array
 *
 */
function groupBy($arr, $criteria): array
{
    return array_reduce($arr, function($accumulator, $item) use ($criteria) {
        $key = (is_callable($criteria)) ? $criteria($item) : $item[$criteria];
        if (!array_key_exists($key, $accumulator)) {
            $accumulator[$key] = [];
        }

        array_push($accumulator[$key], $item);
        return $accumulator;
    }, []);
}

Đây là mảng đã cho:

$arr = array(
    'a' => array ( 'id' => 20, 'name' => 'chimpanzee' ),
    'b' => array ( 'id' => 40, 'name' => 'meeting' ),
    'c' => array ( 'id' => 20, 'name' => 'dynasty' ),
    'd' => array ( 'id' => 50, 'name' => 'chocolate' ),
    'e' => array ( 'id' => 10, 'name' => 'bananas' ),
    'f' => array ( 'id' => 50, 'name' => 'fantasy' ),
    'g' => array ( 'id' => 50, 'name' => 'football' )
);

Và các ví dụ sử dụng chức năng với một chuỗi và chức năng gọi lại:

$q = groupBy($arr, 'id');
print_r($q);

$r = groupBy($arr, function($item) {
    return $item['id'];
});
print_r($r);

Kết quả giống nhau trong cả hai ví dụ:

Array
(
    [20] => Array
        (
            [0] => Array
                (
                    [id] => 20
                    [name] => chimpanzee
                )

            [1] => Array
                (
                    [id] => 20
                    [name] => dynasty
                )

        )

    [40] => Array
        (
            [0] => Array
                (
                    [id] => 40
                    [name] => meeting
                )

        )

    [50] => Array
        (
            [0] => Array
                (
                    [id] => 50
                    [name] => chocolate
                )

            [1] => Array
                (
                    [id] => 50
                    [name] => fantasy
                )

            [2] => Array
                (
                    [id] => 50
                    [name] => football
                )

        )

    [10] => Array
        (
            [0] => Array
                (
                    [id] => 10
                    [name] => bananas
                )

        )

)

Vượt qua cuộc gọi lại là quá mức quá mức trong ví dụ trên, nhưng sử dụng cuộc gọi lại sẽ tìm thấy việc sử dụng nó khi bạn chuyển trong một mảng các đối tượng, một mảng đa chiều hoặc có một số điều tùy ý mà bạn muốn nhóm theo.

Nói chung, chức năng nhóm theo mệnh đề và sum () được sử dụng trong cơ sở dữ liệu để sắp xếp các bản ghi. Nhóm theo bản ghi nhóm tuyên bố theo cùng các giá trị và trả về các bản ghi được lọc. SUM () là một hàm tổng hợp được sử dụng bởi nhóm theo câu lệnh. Nhóm và các hoạt động SUM có thể được tích hợp vào danh sách dữ liệu ở cấp mã trong PHP.

Sử dụng hàm pHP mảng_Reduce () để nhóm theo và tổng các giá trị của một mảng trong PHP. Trong ví dụ này, chúng tôi sẽ chỉ cho bạn cách nhóm mảng theo giá trị khóa và tổng bằng PHP. Nó giúp tổng hợp các giá trị của một mảng có cùng các khóa trong PHP.PHP array_reduce() function to GROUP BY and SUM values of an array in PHP. In this example, we will show you how to group array by key and sum values using PHP. It helps to sum the values of an array with the same keys in PHP.

Trong đoạn mã sau, chúng tôi sẽ nhóm mảng theo giá trị category_id và tổng score với PHP.

$array = array( 
  array(
    
'id' => 1,
    
'category_id' => 5,
    
'score' => 321
  
),
  array(
    
'id' => 2,
    
'category_id' => 2,
    
'score' => 123
  
),
  array(
    
'id' => 3,
    
'category_id' => 5,
    
'score' => 567
  
),
  array(
    
'id' => 4,
    
'category_id' => 2,
    
'score' => 878
  
),
  array(
    
'id' => 5,
    
'category_id' => 5,
    
'score' => 621
  
)
);
$result array_reduce($array, function($carry$item){
    if(!isset(
$carry[$item['category_id']])){
        
$carry[$item['category_id']] = ['category_id'=>$item['category_id'],'score'=>$item['score']];
    } else {
        
$carry[$item['category_id']]['score'] += $item['score'];
    }
    return 
$carry;
});

Mảng sau đây sẽ trở lại sau nhóm theo và các hoạt động tổng.

Array
(
    [5] => Array
        (
            [category_id] => 5
            [score] => 1509
        )

    [2] => Array
        (
            [category_id] => 2
            [score] => 1001
        )

)

Làm thế nào để nhóm theo giá trị mảng trong PHP?

Sử dụng hàm pHP mảng_Reduce () để nhóm theo và tổng các giá trị của một mảng trong PHP. to GROUP BY and SUM values of an array in PHP.

Làm thế nào để bạn nhóm dữ liệu trong một mảng?

Phương thức nhóm () nhóm các phần tử của mảng gọi theo các giá trị chuỗi được trả về bởi hàm thử nghiệm được cung cấp.Đối tượng được trả về có các thuộc tính riêng cho mỗi nhóm, chứa các mảng với các phần tử trong nhóm.Phương pháp này nên được sử dụng khi tên nhóm có thể được biểu diễn bằng các chuỗi.. The returned object has separate properties for each group, containing arrays with the elements in the group. This method should be used when group names can be represented by strings.

Làm thế nào để bạn tổng hợp các giá trị của một mảng có cùng một khóa trong PHP?

Để tổng hợp các giá trị của một khóa cụ thể (chẳng hạn như Qty) trong mảng, bạn có thể sử dụng bất kỳ khóa nào sau:..
vòng lặp foreach ;.
Array_Sum () và Array_Column ().
mảng_sum () và mảng_map ();
Array_Reduce () ..

Làm thế nào để bạn tổng hợp một giá trị mảng?

Bạn có thể tìm thấy tổng của tất cả các phần tử trong một mảng bằng cách làm theo cách tiếp cận bên dưới: khởi tạo một tổng biến để lưu trữ tổng số của tất cả các phần tử của mảng.Trả về biến tổng.Initialize a variable sum to store the total sum of all elements of the array. Traverse the array and add each element of the array with the sum variable. Finally, return the sum variable.