JBZoo\Utils\Arr::groupByKey PHP 메소드

groupByKey() 공개 정적인 메소드

Group array by key
public static groupByKey ( array $arrayList, string $key = 'id' ) : array
$arrayList array
$key string
리턴 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

예제 #1
0
파일: ArrayTest.php 프로젝트: jbzoo/utils
 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'));
 }