公式サイトを見て知識を入れる。
Helpers – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/master/helpers
Arr::accessible($value)
与えられた値が配列アクセス可能か調べる。
1 2 3 4 5 6 7 8 9 10 11 |
use Illuminate\Support\Arr; use Illuminate\Support\Collection; $isAccessible = Arr::accessible(['a' => 1, 'b' => 2]); // true $isAccessible = Arr::accessible(new Collection); // true $isAccessible = Arr::accessible('abc'); // false $isAccessible = Arr::accessible(new stdClass); // false |
Arr::add($array, $key, $value)
与えられたキーがまだ配列中に存在しない、あるいはキーは存在するが値がnullならば、キー/値のペアを配列に追加する。
1 2 3 4 5 6 |
use Illuminate\Support\Arr; $array = Arr::add(['name' => 'Desk'], 'price', 100); // ['name' => 'Desk', 'price' => 100] $array = Arr::add(['name' => 'Desk', 'price' => null], 'price', 100); // ['name' => 'Desk', 'price' => 100] |
Arr::collapse($array)
配列の配列を単一配列に変換する。
1 2 3 4 |
use Illuminate\Support\Arr; $array = Arr::collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); // [1, 2, 3, 4, 5, 6, 7, 8, 9] |
Arr::crossJoin(…$arrays)
与えられた複数の配列を交差結合(cross join)して、すべての可能な組み合わせを持つデカルト積を返す。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
use Illuminate\Support\Arr; $matrix = Arr::crossJoin([1, 2], ['a', 'b']); /* [ [1, 'a'], [1, 'b'], [2, 'a'], [2, 'b'], ] */ $matrix = Arr::crossJoin([1, 2], ['a', 'b'], ['I', 'II']); /* [ [1, 'a', 'I'], [1, 'a', 'II'], [1, 'b', 'I'], [1, 'b', 'II'], [2, 'a', 'I'], [2, 'a', 'II'], [2, 'b', 'I'], [2, 'b', 'II'], ] */ |
Arr::divide($array)
与えられた配列に関して、キーを格納する配列と値を格納する配列の2つを返す。
1 2 3 4 5 |
use Illuminate\Support\Arr; [$keys, $values] = Arr::divide(['name' => 'Desk']); // $keys: ['name'] // $values: ['Desk'] |
Arr::dot($array, $prepend = ”)
多次元配列を、深さを示すドット表記を使った単一配列に変換する。
1 2 3 4 5 |
use Illuminate\Support\Arr; $array = ['products' => ['desk' => ['price' => 100]]]; $flattened = Arr::dot($array); // ['products.desk.price' => 100] |
Arr::except($array, $keys)
与えられたキー/値のペアを配列から削除する。
1 2 3 4 5 |
use Illuminate\Support\Arr; $array = ['name' => 'Desk', 'price' => 100]; $filtered = Arr::except($array, ['price']); // ['name' => 'Desk'] |
Arr::exists($array, $key)
与えられたキーが配列中に存在するか調べる。
1 2 3 4 5 6 7 |
use Illuminate\Support\Arr; $array = ['name' => 'John Doe', 'age' => 17]; $exists = Arr::exists($array, 'name'); // true $exists = Arr::exists($array, 'salary'); // false |
Arr::first($array, callable $callback = null, $default = null)
与えられた判定にマッチした最初の要素を返す。
1 2 3 4 5 6 7 |
use Illuminate\Support\Arr; $array = [100, 200, 300]; $first = Arr::first($array, function ($value, $key) { return $value >= 150; }); // 200 |
マッチしなかったときに返すデフォルト値を3番目の引数に指定できる。
1 2 3 |
use Illuminate\Support\Arr; $first = Arr::first($array, $callback, $default); |
Arr::flatten($array, $depth = INF)
多次元配列を単一配列に変換する。
1 2 3 4 5 |
use Illuminate\Support\Arr; $array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']]; $flattened = Arr::flatten($array); // ['Joe', 'PHP', 'Ruby'] |
Arr::forget(&$array, $keys)
ドット表記を使ってネストが深い配列から与えられたキー/値のペアを削除する。
1 2 3 4 5 |
use Illuminate\Support\Arr; $array = ['products' => ['desk' => ['price' => 100]]]; Arr::forget($array, 'products.desk'); // ['products' => []] |
Arr::get($array, $key, $default = null)
ドット表記を使ってネストが深い配列から値が取得する。
1 2 3 4 5 |
use Illuminate\Support\Arr; $array = ['products' => ['desk' => ['price' => 100]]]; $price = Arr::get($array, 'products.desk.price'); // 100 |
指定されたキーが配列中に存在しない場合に返すデフォルト値を3番目の引数に指定できる。
1 2 3 4 |
use Illuminate\Support\Arr; $discount = Arr::get($array, 'products.desk.discount', 0); // 0 |
Arr::has($array, $keys)
ドット表記を使って配列中に項目(または項目群)が存在するか調べる。
1 2 3 4 5 6 7 |
use Illuminate\Support\Arr; $array = ['product' => ['name' => 'Desk', 'price' => 100]]; $contains = Arr::has($array, 'product.name'); // true $contains = Arr::has($array, ['product.price', 'product.discount']); // false |