前のページ

Laravelでコレクションを整形するメソッド

みなさんこんにちは、あべ いさぢです。

今回はコレクションを整形するメソッドでよく使う物のメモになります。


今回登場するメソッド

下記になります。


それぞれ見ていきます。


map

連想配列の要素を整形します。


下記のコードで考えます。

$people = collect([
    ['name' => 'jonio', 'age' => 44],
    ['name' => 'takuya', 'age' => 28]]);

$peopleChanges = $people->map(function ($person) {
    return [
        'name' => strtoupper($person['name']),
        'age' => $person['age'] * 2
    ];});

出力結果は下記になります。

dd($peopleChanges->all());//出力結果array:2 [▼ 
  0 => array:2 [▼
    "name" => "JONIO"
    "age" => 88]1 => array:2 [▼
    "name" => "TAKUYA"
    "age" => 56]]



mapWithKeys

各要素の連想配列のvalueを使って新しい連想配列の要素に作り変えます。



下記のコードで考えます。

$people = collect([
    ['name' => 'jonio', 'age' => 44],
    ['name' => 'takuya', 'age' => 28]]);

$newArray = $people->mapWithKeys(function ($person) {
    return [$person['name'] => $person['age']];});

出力結果は下記になります。

dd($keyedData->all());

//出力結果:array:2 [▼ 
  "jonio" => 44"takuya" => 28]



flatten

多次元の配列がある場合1次元の配列に変換します。



下記のコードで考えます。

$nestArray = collect([
    ['jonio', 'takuya', 'colors' => ['orange', 'black', 'white']],
    ['PHP', 'Laravel', 'JavaScript'],
    [30, 25, 30],]);

$oneDimensionArray = $nestArray->flatten();

出力結果は下記になります。

dd($oneDimensionArray->all());

// 出力結果:array:11 [▼ 
  0 => "jonio"1 => "takuya"2 => "orange"3 => "black"4 => "white"5 => "PHP"6 => "Laravel"7 => "JavaScript"8 => 309 => 2510 => 30]



flatMap

連想配列の要素を整形してvalueを使った1次元の配列に変換します。


$people = collect([
    ['name' => 'jonio', 'age' => 44],
    ['name' => 'takuya', 'age' => 28],]);

$oneDimensionPeople = $people->flatMap(function ($person) {
    return [$person['name'], $person['age'] * 2];});


出力結果は下記になります。


dd($flatPeople->all());

//出力結果: array:4 [▼
  0 => "jonio"1 => 882 => "takuya"3 => 56]


戻る