.Dev.Record

#623867c4ec394

【Laravel】へルパ関数の紹介 配列編3【Arr::get、Arr::has、Arr::hasAny】

2022.03.21

test

前回に引き続き本記事でもLaravelの配列関連のへルパ関数を解説していきたいと思います。

参考になれば幸いです。

Memo

Laravelのバージョンは8系統になります。

今回解説するへルパ関数は以下です。

本記事で取り扱うへルパ関数

  • Arr::get(ドット記法で指定したキーの値を取得)
  • Arr::has(ドット記法で指定したキーが配列に存在するか判定)
  • Arr::hasAny(ドット記法で指定した複数キーが1つ以上配列に存在するか判定)

Arr::get ドット記法で指定したキーの値を取得

配列内にドット記法で指定した値を取得します。

Arr::get

Arr::get(配列, 取得したいキー, (オプション)デフォルト値): 取得した値

  • 第二引数のキーはドット記法で指定可能
  • コレクションも可能
  • 指定したキーが存在しない場合はnullが返ってくるが、第三引数を指定している場合はその値が返される

使用例

1$array = ['key-1' => 1, 'key-2' => ['key-2-1' => 2]];
2dd(Arr::get($array, 'key-2.key-2-1')); // ドット記法で指定可能
3
4// 結果
52

コレクションでも可能です。

コレクションを使用

1$collection = Collection::make(['key-1' => 1, 'key-2' => ['key-2-1' => 2], ]);
2dd(Arr::get($collection, 'key-2.key-2-1'));
3
4// 結果
52

第三引数で取得するキーが存在しない場合のデフォルト値を指定できます。

デフォルト値を指定

1$array = ['key-1' => 1, 'key-2' => ['key-2-1' => 2]];
2dd(Arr::get($array, 'key-999', 'default value')); // 第三引数にデフォルト値を指定
3
4// 結果(指定したキーが存在しない場合は第三引数に指定した値を出力)
5"default value"

Arr::has ドット記法で指定したキーが配列内に存在するか判定

ドット記法で指定したキーが配列内に存在するか判定します。存在する場合はtrueを存在しない場合はfalseを返します。

Arr::has

Arr::has(配列, 検索するキー(ドット記法)): bool

  • コレクションも可能
  • 検索キーは配列で複数指定が可能(完全一致

使用例

1$array = ['key-1' => 1, 'key-2' => ['key-2-1' => 2]];
2
3// true
4Arr::has($array, 'key-2.key-2-1');
5
6// false
7Arr::has($array, 'key-3');

コレクションでも使用できます。

コレクションを使用

1$collection = Collection::make(['key-1' => 1, 'key-2' => ['key-2-1' => 2]]);
2
3// true
4Arr::has($collection, 'key-2.key-2-1');
5
6// false
7Arr::has($collection, 'key-3');

検索キーは配列で複数指定が可能です。

その場合は完全一致だとtrueが返ります

検索キーを複数指定

1$array = ['key-1' => 1, 'key-2' => ['key-2-1' => 2]];
2
3// true
4Arr::has($array, ['key-1', 'key-2.key-2-1']);
5
6// false(部分一致の場合はfalseとなるjj)
7Arr::has($array, ['key-999', 'key-2.key-2-1']);

Arr::hasAny 指定した複数キーが1つ以上配列に存在するか判定

ドット記法で指定した複数キーが1つ以上配列に存在する場合はtrueが返ります。

Arr::hasとは異なり、trueを返す条件は部分一致になります

Arr:hasAny

Arr::hasAny(配列, 検索するキー(ドット記法)): bool

  • コレクションでも可能

使用例

1$array = ['key-1' => 1, 'key-2' => ['key-2-1' => 2]];
2
3// true(部分一致で一致していればtrue)
4Arr::hasAny($array, ['key-999', 'key-2.key-2-1']);
5
6// false
7Arr::hasAny($array, ['key-999', 'key-998']);

コレクションを使用

1$collection = Collection::make(['key-1' => 1, 'key-2' => ['key-2-1' => 2]]);
2
3// true
4Arr::hasAny($collection, ['key-999', 'key-2.key-2-1']);
5
6// false
7Arr::hasAny($collection, ['key-999', 'key-998']);

今回はArr::getArr::hasArr::hasAnyの三つの配列系へルパ関数の紹介でした。

以下まとめです。

まとめ

  • Arr::get(指定したキーの値を取得)
  • Arr::has(キーの検索(完全一致検索))
  • Arr::hasAny(キーの検索(部分一致検索))

残りのへルパ関数もまとめていきたいと思いますのでぜひ覗いていってください。

.Dev.Record