端くれプログラマの備忘録 Laravel [Laravel] 配列&オブジェクトのヘルパー関数 (1)

[Laravel] 配列&オブジェクトのヘルパー関数 (1)

公式サイトを見て知識を入れる。

Helpers – Laravel – The PHP Framework For Web Artisans
https://laravel.com/docs/master/helpers

Arr::accessible($value)

与えられた値が配列アクセス可能か調べる。

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ならば、キー/値のペアを配列に追加する。

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)

配列の配列を単一配列に変換する。

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)して、すべての可能な組み合わせを持つデカルト積を返す。

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つを返す。

use Illuminate\Support\Arr;

[$keys, $values] = Arr::divide(['name' => 'Desk']);
// $keys: ['name']
// $values: ['Desk']

Arr::dot($array, $prepend = ”)

多次元配列を、深さを示すドット表記を使った単一配列に変換する。

use Illuminate\Support\Arr;

$array = ['products' => ['desk' => ['price' => 100]]];
$flattened = Arr::dot($array);
// ['products.desk.price' => 100]

Arr::except($array, $keys)

与えられたキー/値のペアを配列から削除する。

use Illuminate\Support\Arr;

$array = ['name' => 'Desk', 'price' => 100];
$filtered = Arr::except($array, ['price']);
// ['name' => 'Desk']

Arr::exists($array, $key)

与えられたキーが配列中に存在するか調べる。

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)

与えられた判定にマッチした最初の要素を返す。

use Illuminate\Support\Arr;

$array = [100, 200, 300];
$first = Arr::first($array, function ($value, $key) {
return $value >= 150;
});
// 200

マッチしなかったときに返すデフォルト値を3番目の引数に指定できる。

use Illuminate\Support\Arr;

$first = Arr::first($array, $callback, $default);

Arr::flatten($array, $depth = INF)

多次元配列を単一配列に変換する。

use Illuminate\Support\Arr;

$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];
$flattened = Arr::flatten($array);
// ['Joe', 'PHP', 'Ruby']

Arr::forget(&$array, $keys)

ドット表記を使ってネストが深い配列から与えられたキー/値のペアを削除する。

use Illuminate\Support\Arr;

$array = ['products' => ['desk' => ['price' => 100]]];
Arr::forget($array, 'products.desk');
// ['products' => []]

Arr::get($array, $key, $default = null)

ドット表記を使ってネストが深い配列から値が取得する。

use Illuminate\Support\Arr;

$array = ['products' => ['desk' => ['price' => 100]]];
$price = Arr::get($array, 'products.desk.price');
// 100

指定されたキーが配列中に存在しない場合に返すデフォルト値を3番目の引数に指定できる。

use Illuminate\Support\Arr;

$discount = Arr::get($array, 'products.desk.discount', 0);
// 0

Arr::has($array, $keys)

ドット表記を使って配列中に項目(または項目群)が存在するか調べる。

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

続く。