【Laravel】 Laravel 5.7コレクション を一気に勉強(6) − flip,forget,forPage,get,groupBy




この記事は最終更新日から2年以上経過しています。

flip()

キーと値を入れ替えます。

$collection = collect(['name' => 'ichiro', 'no' => 51, 'team' => 'B']);
dump($collection->flip()->all());
/*
array:3 [▼
  "ichiro" => "name"
  51 => "no"
  "B" => "team"
]
*/

forget()

指定したキーとアイテムを削除します。

$collection = collect(['name' => 'ichiro', 'no' => 51, 'team' => 'B']);
dump($collection->forget('name')->all());
/*
array:2 [▼
  "no" => 51
  "team" => "B"
]
*/

forPage()

第一パラメーターでページ番号、第二パラメーターで1ページ表示件数を指定すると第一パラメーターで指定したページ番号のデータに関するコレクションを取得します。

$array = [];
for($i = 0; $i < 20; $i++) {
    $array[] = $i;
}
dump(collect($array)->forpage(6, 3));
/*
array:3 [▼
  15 => 15
  16 => 16
  17 => 17
]
*/

get()

指定したキーのアイテムを取得します。キーが存在しない場合は第二パラメーターの値で返す値が変わります。
第二パラメーターが指定していない場合はnullを返します。
デフォルト値を設定していると、デフォルト値を返します。
コールバックを設定するとコールバックを実行し、その結果を返します。

$collection = collect(['name' => 'ichiro', 'no' => 51, 'team' => 'B']);
dump($collection->get('name'));
dump($collection->get('age', 0));
dump($collection->get('age', function() {
    return '未登録';
}));
/*
"ichiro"
0
"未登録"
*/

groupBy()

指定したキーでグルーピングします。

$collection = collect([
    ['name' => 'ichiro', 'no' => 51, 'team' => 'B'],
    ['name' => 'ichiro', 'no' => 31, 'team' => 'NY'],
    ['name' => 'matsui', 'no' => 55, 'team' => 'G'],
    ['name' => 'senichi', 'no' => 77, 'team' => 'D'],
]);
dump($collection->groupBy('name')->all());
/*
array:3 [▼
  "ichiro" => Collection {#428 ▼
    #items: array:2 [▼
      0 => array:3 [▶]
      1 => array:3 [▶]
    ]
  }
  "matsui" => Collection {#424 ▼
    #items: array:1 [▼
      0 => array:3 [▶]
    ]
  }
  "senichi" => Collection {#429 ▼
    #items: array:1 [▼
      0 => array:3 [▶]
    ]
  }
]
*/