Illuminate\Support\Collection::groupBy PHP Method

groupBy() public method

Group an associative array by a field or using a callback.
public groupBy ( callable | string $groupBy, boolean $preserveKeys = false ) : static
$groupBy callable | string
$preserveKeys boolean
return static
    public function groupBy($groupBy, $preserveKeys = false)
    {
        $groupBy = $this->valueRetriever($groupBy);
        $results = [];
        foreach ($this->items as $key => $value) {
            $groupKeys = $groupBy($value, $key);
            if (!is_array($groupKeys)) {
                $groupKeys = [$groupKeys];
            }
            foreach ($groupKeys as $groupKey) {
                if (!array_key_exists($groupKey, $results)) {
                    $results[$groupKey] = new static();
                }
                $results[$groupKey]->offsetSet($preserveKeys ? $key : null, $value);
            }
        }
        return new static($results);
    }

Usage Example

Exemplo n.º 1
0
 /**
  * @param Collection $books
  *
  * @return array
  */
 private function group($books)
 {
     $grouped = [];
     foreach ($books->groupBy('id') as $episodes) {
         foreach ($episodes as $key => $episode) {
             $grouped[$key][] = $episode;
         }
     }
     return $grouped;
 }
All Usage Examples Of Illuminate\Support\Collection::groupBy