| 제목 | 배열 gorup by 함수 | ||
|---|---|---|---|
| 글쓴이 | kaido | 작성시각 | 2019/10/14 18:01:41 | 
|  | |||
| 배열별로 집계를 내는 방법이 없을까 하다 찾아보니 이런식으로 구현이 가능 하더군요. 혹시 찾는분이 있을까봐 코드 공유해 드립니다 ㅎㅎ PS . 앞에 $this 제거 하고 함수 형태로 사용하셔도 무방합니다 
 
class group {
public function group_by($column_name, $rows)
    {
        $result = array();
        $groups = $this->distinct($rows, $column_name);
        foreach ($groups as $group) {
            $result[$group] = $this->where($rows, array($column_name => $group));
        }
        return $result;
    }
    public function distinct($rows, $column_name)
    {
        $column_values = array();
        foreach ($rows as $row) {
            $column_values[$row[$column_name]] = 1;
        }
        return array_keys($column_values);
    }
    public function where($rows, $params)
    {
        $result = array();
        foreach ($rows as $row) {
            $row_matched = true;
            foreach ($params as $column_name => $column_value) {
                if (!array_key_exists($column_name, $row) || $row[$column_name] != $column_value) {
                    $row_matched = false;
                    break;
                }
            }
            if ($row_matched)
                $result[] = $row;
        }
        return $result;
    }
}
$group = new group();
$arr = [ [0 => 'key'=>"A"] , [1 => 'key'=>"B"] , [2 => 'key'=>"B"]  ];
print_r($group->group_by('배열키값 key', $arr));
 | |||
| 다음글 | Webpack - Bootstrap4 - media-b... | ||
| 이전글 | wp 스타일 후크 헬퍼 (2) | ||
| 
                                변종원(웅파)
                                /
                                2019/10/14 18:58:47 /
                                추천
                                0
                             | 
| 
                                변종원(웅파)
                                /
                                2019/10/15 09:08:11 /
                                추천
                                0
                             끝판왕 
 |