#6237e7b4e8fa0
2022.03.21
前回に引き続き本記事でもLaravelの配列関連のへルパ関数を解説していきたいと思います。
参考になれば幸いです。
Memo
Laravelのバージョンは8系統になります。
今回解説するへルパ関数は以下です。
本記事で取り扱うへルパ関数
Arr::first 配列内で条件に一致した最初の要素を取得
配列内で条件に一致した最初の要素を取得します。
Arr::first
Arr::first(配列, 要素を検証するコールバック関数(値, キー), (オプション)条件に一致する要素がなかった場合に返す値)
使用例
1$array = ['key-1' => 1, 'key-2' => 2]; 2dd(Arr::first($array, function($value, $key) { 3 return $value === 2 && $key === 'key-2'; // 条件文 4})); 5 6// 結果 72
上記の例では、第二引数のコールバック関数内でキーがkey-2でかつ値が2という条件を指定しています。
以下はサンプルのコールバック関数の実行イメージになります。
実行例のイメージ
1$array = ['key-1' => 1, 'key-2' => 2]; 2Arr::first($array, function($value, $key) { 3 // コールバック関数は配列の要素毎に実施される 4 // 一周目に$value = 1, $key = 'key-1'が格納されるので、条件に一致しないので次の要素へ 5 // 二周目に$value = 2, $key = 'key-2'が格納され、これは条件に一致するのでtrue 6 return $value === 2 && $key === 'key-2'; 7});
第三引数を指定した場合
1$array = ['key-1' => 1, 'key-2' => 2]; 2$default = 'default value'; 3 4dd(Arr::first($array, function ($value, $key) { 5 return $value === 3; 6}, $default)); 7 8// 結果(一致する要素がなかった場合に第三引数に指定した値が返される) 9"default value"
Arr::flatten 多次元配列を一次元配列へ変換
多次元配列を一次元配列に変換します。
Arr::flatten
Arr::flatten(変換する配列, 変換する階層の深さ(デフォルトは全て)): array
使用例
1$array = ['key-1' => 1, 'key-2' => ['key-2-2' => 2], [3, ['key-3' => 4]]]; 2dd(Arr::flatten($array)); 3 4// 結果(添字配列の一次元配列に変換される) 5array:4 [▼ 6 0 => 1 7 1 => 2 8 2 => 3 9 3 => 4 10]
コレクション使用時
1$collection = Collection::make(['key-1' => 1, 'key-2' => ['key-2-2' => 2], [3, ['key-3' => 4]]]); 2dd(Arr::flatten($collection)); 3 4// 結果 5array:4 [▼ 6 0 => 1 7 1 => 2 8 2 => 3 9 3 => 4 10]
第二引数では、一次元配列に変換する階層を指定できます。
第二引数で一次元配列に変換する階層を指定する
1$array = ['key-1' => 1, 'key-2' => ['key-2-2' => 2], [3, ['key-3' => 4]]]; 2dd(Arr::flatten($array)); 3 4// 結果(添字配列の一次元配列に変換される) 5array:4 [▼ 6 0 => 1 7 1 => 2 8 2 => 3 9 3 => 4 10]
上記の例では、第二引数に1を指定しているので配列内の一階層以降の部分['key-3' => 4]
は一次元配列に変換されません。
Arr::forget ドット記法で指定したキーに対応する要素を削除
ドット記法で指定したキーを配列から削除します。
Arr::forget
Arr::forget(&配列, 削除するキー(ドット記法)): void
使用例
1$array = [ 2 'key-1' => 1, 3 'key-2' => ['key-2-1' => 2], 4 'key-3' => ['key-3-1' => 5], 5]; 6Arr::forget($array, 'key-3.key-3-1'); //ドット記法でキーの指定が可能 7dd($array); 8 9// 結果 10// key-3-1のキーと値が削除されている 11array:3 [▼ 12 "key-1" => 1 13 "key-2" => array:1 [▼ 14 "key-2-1" => 2 15 ] 16 "key-3" => [] 17]
削除するキーは配列で複数指定が可能です。
削除するキーを複数指定
1$array = [ 2 'key-1' => 1, 3 'key-2' => ['key-2-1' => 2], 4 'key-3' => ['key-3-1' => 5], 5]; 6Arr::forget($array, ['key-2', 'key-3.key-3-1']); 7dd($array); 8 9// 結果 10array:2 [▼ 11 "key-1" => 1 12 "key-3" => [] 13]
コレクションを指定するとエラーになります。
コレクションを指定するとエラーになる
1$collection = Collection::make([ 2 'key-1' => 1, 3 'key-2' => ['key-2-1' => 2], 4 'key-3' => ['key-3-1' => 5], 5]); 6Arr::forget($collection, 'key-3.key-3-1'); 7 8// エラー 9// Indirect modification of overloaded element of Illuminate\Support\Collection has no effect
今回はArr::first
、Arr::flatten
、Arr::forget
の三つの配列系へルパ関数の紹介でした。
以下まとめです。
まとめ
残りのへルパ関数もまとめていきたいと思いますのでぜひ覗いていってください。