JBZoo\Utils\Arr::groupByKey PHP Method

groupByKey() public static method

Group array by key
public static groupByKey ( array $arrayList, string $key = 'id' ) : array
$arrayList array
$key string
return array
    public static function groupByKey(array $arrayList, $key = 'id')
    {
        $result = array();
        foreach ($arrayList as $item) {
            if (is_object($item)) {
                if (isset($item->{$key})) {
                    $result[$item->{$key}][] = $item;
                }
            } elseif (is_array($item)) {
                if (Arr::key($key, $item)) {
                    $result[$item[$key]][] = $item;
                }
            }
        }
        return $result;
    }

Usage Example

Example #1
0
 public function testGroupByKey()
 {
     $array = array(array('name' => 'Bob', 'age' => 37), array('name' => 'Bob', 'age' => 66), array('name' => 'Fred', 'age' => 20), array('age' => 41));
     isSame(array('Bob' => array(array('name' => 'Bob', 'age' => 37), array('name' => 'Bob', 'age' => 66)), 'Fred' => array(array('name' => 'Fred', 'age' => 20))), Arr::groupByKey($array, 'name'));
     $array = array((object) array('name' => 'Bob', 'age' => 37), (object) array('name' => 'Bob', 'age' => 66), (object) array('name' => 'Fred', 'age' => 20), (object) array('age' => 41));
     is(array('Bob' => array((object) array('name' => 'Bob', 'age' => 37), (object) array('name' => 'Bob', 'age' => 66)), 'Fred' => array((object) array('name' => 'Fred', 'age' => 20))), Arr::groupByKey($array, 'name'));
 }