Laravelでコレクションを整形するメソッド
143 回閲覧されました
みなさんこんにちは、jonioです。
今回はコレクションを整形するメソッドでよく使う物のメモになります。
おすすめ参考書
基礎力を上げるのに一番おすすめです。
リンク
今回登場するメソッド
下記になります。
- map
- mapWithKeys
- flatten
- flatMap
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 => 30
9 => 25
10 => 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 => 88
2 => "takuya"
3 => 56
]