公式サイトを見て知識を入れる。
Helpers – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/master/helpers
Arr::sortRecursive($array)
部分配列(数値によるインデックス)にはsort関数を、連想配列にはksort関数を用いて、配列を再帰的にソートする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
use Illuminate\Support\Arr; $array = [ ['Roman', 'Taylor', 'Li'], ['PHP', 'Ruby', 'JavaScript'], ['one' => 1, 'two' => 2, 'three' => 3], ]; $sorted = Arr::sortRecursive($array); /* [ ['JavaScript', 'PHP', 'Ruby'], ['one' => 1, 'three' => 3, 'two' => 2], ['Li', 'Roman', 'Taylor'], ] */ |
Arr::toCssClasses($array)
CSSクラスの文字列を条件付きでコンパイルする。引数にはクラスの配列を指定する。配列のキーは追加したいクラス、値にはクラスの有効/無効をブール値で指定する。配列の要素が数値キーの場合は、それは常にレンダリングされたクラスリストに含まれる。
1 2 3 4 5 6 7 8 |
use Illuminate\Support\Arr; $isActive = false; $hasError = true; $array = ['p-4', 'font-bold' => $isActive, 'bg-red' => $hasError]; $classes = Arr::toCssClasses($array); /* 'p-4 bg-red' */ |
Arr::undot($array)
ドット記法を用いた1次元配列を多次元配列に展開する。
1 2 3 4 5 6 7 |
use Illuminate\Support\Arr; $array = [ 'user.name' => 'Kevin Malone', 'user.occupation' => 'Accountant', ]; $array = Arr::undot($array); // ['user' => ['name' => 'Kevin Malone', 'occupation' => 'Accountant']] |
Arr::where($array, $callback)
与えられたクロージャを用いて配列をフィルターする。
1 2 3 4 5 6 |
use Illuminate\Support\Arr; $array = [100, '200', 300, '400', 500]; $filtered = Arr::where($array, function ($value, $key) { return is_string($value); }); // [1 => '200', 3 => '400'] |
Arr::whereNotNull($array)
与えられた配列から全てのnull値を削除する。
1 2 3 4 |
use Illuminate\Support\Arr; $array = [0, null]; $filtered = Arr::whereNotNull($array); // [0 => 0] |
Arr::wrap($string)
与えられた値を配列でラップする。与えられた値が既に配列ならば、変更せずにそのまま返す。与えられた値がnullならば、空の配列を返す。
1 2 3 4 5 6 7 8 |
use Illuminate\Support\Arr; $string = 'Laravel'; $array = Arr::wrap($string); // ['Laravel'] use Illuminate\Support\Arr; $array = Arr::wrap(null); // [] |
data_fill($target, $key, $value)
ネストされた配列またはオブジェクト内の不足している値を “ドット” 表記で設定する。ワイルドカードとしてアスタリスクも使用できる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$data = ['products' => ['desk' => ['price' => 100]]]; data_fill($data, 'products.desk.price', 200); // ['products' => ['desk' => ['price' => 100]]] data_fill($data, 'products.desk.discount', 10); // ['products' => ['desk' => ['price' => 100, 'discount' => 10]]] $data = [ 'products' => [ ['name' => 'Desk 1', 'price' => 100], ['name' => 'Desk 2'], ], ]; data_fill($data, 'products.*.price', 200); /* [ 'products' => [ ['name' => 'Desk 1', 'price' => 100], ['name' => 'Desk 2', 'price' => 200], ], ] */ |
data_get($target, $key, $default=null)
ネストされた配列またはオブジェクトから、ドット記法で値を取得する。指定されたキーが見つからなかった場合に返されるデフォルト値も指定できる。ワイルドカードとしてアスタリスクも使用可能で、ワイルドカードにより配列やオブジェクトの任意のキーを対象とすることができる。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$data = ['products' => ['desk' => ['price' => 100]]]; $price = data_get($data, 'products.desk.price'); // 100 $discount = data_get($data, 'products.desk.discount', 0); // 0 $data = [ 'product-one' => ['name' => 'Desk 1', 'price' => 100], 'product-two' => ['name' => 'Desk 2', 'price' => 150], ]; data_get($data, '*.name'); // ['Desk 1', 'Desk 2']; |
data_set($target, $key, $value, $overwrite=true)
ネストした配列やオブジェクトに値を設定する。ワイルドカードとしてアスタリスクも使用可能で、それに応じてターゲットに値を設定することができる。デフォルトでは規定の値は全て上書きされる。値が存在しない場合のみ値を設定したい場合には、4番目の引数にfalseを指定する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$data = ['products' => ['desk' => ['price' => 100]]]; data_set($data, 'products.desk.price', 200); // ['products' => ['desk' => ['price' => 200]]] $data = [ 'products' => [ ['name' => 'Desk 1', 'price' => 100], ['name' => 'Desk 2', 'price' => 150], ], ]; data_set($data, 'products.*.price', 200); /* [ 'products' => [ ['name' => 'Desk 1', 'price' => 200], ['name' => 'Desk 2', 'price' => 200], ], ] */ $data = ['products' => ['desk' => ['price' => 100]]]; data_set($data, 'products.desk.price', 200, $overwrite = false); // ['products' => ['desk' => ['price' => 100]]] |
head($array)
与えられた配列の最初の要素を返す。
1 2 3 |
$array = [100, 200, 300]; $first = head($array); // 100 |
last($array)
与えられた配列の最後の要素を返す。
1 2 3 |
$array = [100, 200, 300]; $last = last($array); // 300 |