How to group subarrays by a column value?

前端 未结 18 2040
一生所求
一生所求 2020-11-22 10:43

I have the following array

Array
(
    [0] => Array
        (
            [id] => 96
            [shipping_no] => 212755-1
            [part_no] =&         


        
18条回答
  •  礼貌的吻别
    2020-11-22 11:10

    function array_group_by($arr, array $keys) {
    
    if (!is_array($arr)) {
        trigger_error('array_group_by(): The first argument should be an array', E_USER_ERROR);
    }
    if (count($keys)==0) {
        trigger_error('array_group_by(): The Second argument Array can not be empty', E_USER_ERROR);
    }
    
    // Load the new array, splitting by the target key
    $grouped = [];
    foreach ($arr as $value) {
        $grouped[$value[$keys[0]]][] = $value;
    }
    
    // Recursively build a nested grouping if more parameters are supplied
    // Each grouped array value is grouped according to the next sequential key
    if (count($keys) > 1) {
            foreach ($grouped as $key => $value) {
           $parms = array_merge([$value], [array_slice($keys, 1,count($keys))]);
           $grouped[$key] = call_user_func_array('array_group_by', $parms);
    
        }
    }
    return $grouped;
    

    }

提交回复
热议问题