【Laravel】 Laravel 5.7コレクション を一気に勉強(10) − mapWithKeys,max,median,merge,min




mapWithKeys()

コレクション全体を反復し、コールバックから返されたキー・値のペアで新しいコレクションを生成します。

$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->mapWithKeys(function($item) {
    return [$item['name'] => $item['team']];
}));
/*
Collection {#420 ▼
  #items: array:3 [▼
    "ichiro" => "NY"
    "matsui" => "G"
    "senichi" => "D"
  ]
}
*/

max()

指定したコレクションの値で一番大きい値を返します。
多重配列の場合はキーを指定するとそのキーの中で一番大きい値を返します。

$array = [];
for($i = 0; $i < 10; $i++) {
    $array[] = $i;
}
dump(collect($array)->max());
// 9
$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->max('no'));
// 77

median()

指定したコレクションの中央値を返します。
多重配列の場合はキーを指定するとそのキーの中央値を返します。

$array = [];
for($i = 0; $i < 10; $i++) {
    $array[] = $i;
}
dump(collect($array)->median());
// 4.5
$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->median('no'));
// 53

merge()

指定した配列、またはコレクションをオリジナルコレクションにマージします。
キーが一致する場合はパラメーターの値で上書きされます。

$collection1 = collect([
    ['name' => 'ichiro', 'no' => 51, 'team' => 'B'],
]);
$collection2 = collect([
    ['name' => 'ichiro', 'no' => 31, 'team' => 'NY'],
    ['name' => 'matsui', 'no' => 55, 'team' => 'G'],
    ['name' => 'senichi', 'no' => 77, 'team' => 'D'],
]);
dump($collection1->merge($collection2)->all());
array:4 [▼
  0 => array:3 [▼
    "name" => "ichiro"
    "no" => 51
    "team" => "B"
  ]
  1 => array:3 [▼
    "name" => "ichiro"
    "no" => 31
    "team" => "NY"
  ]
  2 => array:3 [▼
    "name" => "matsui"
    "no" => 55
    "team" => "G"
  ]
  3 => array:3 [▼
    "name" => "senichi"
    "no" => 77
    "team" => "D"
  ]
]

min()

指定したコレクションの値で一番小さい値を返します。
多重配列の場合はキーを指定するとそのキーの中で一番小さい値を返します。

$array = [];
for($i = 0; $i < 10; $i++) {
    $array[] = $i;
}
dump(collect($array)->min());
// 0
$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->min('no'));
// 31