How to group subarrays by a column value?

前端 未结 18 2041
一生所求
一生所求 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:04

    This should group an associative array Ejm Group By Country

    function getGroupedArray($array, $keyFieldsToGroup) {   
        $newArray = array();
    
        foreach ($array as $record) 
            $newArray = getRecursiveArray($record, $keyFieldsToGroup, $newArray);
    
        return $newArray;
    }
    function getRecursiveArray($itemArray, $keys, $newArray) {
        if (count($keys) > 1) 
            $newArray[$itemArray[$keys[0]]] = getRecursiveArray($itemArray,    array_splice($keys, 1), $newArray[$itemArray[$keys[0]]]);
        else
            $newArray[$itemArray[$keys[0]]][] = $itemArray;
    
        return $newArray;
    }
    
    $countries = array(array('Country'=>'USA', 'State'=>'California'),
                       array('Country'=>'USA', 'State'=>'Alabama'),
                       array('Country'=>'BRA', 'State'=>'Sao Paulo'));
    
    $grouped = getGroupedArray($countries, array('Country'));
    

提交回复
热议问题