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

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

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

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

Arr::hasAny($array, $keys)

ドット表記で与えられたセット中の任意の項目が配列中に存在するか調べる。

use Illuminate\Support\Arr;

$array = ['product' => ['name' => 'Desk', 'price' => 100]];
$contains = Arr::hasAny($array, 'product.name');
// true
$contains = Arr::hasAny($array, ['product.name', 'product.discount']);
// true
$contains = Arr::hasAny($array, ['category', 'product.discount']);
// false

Arr::isAssoc(array $array)

与えられた配列が連想配列か調べる。ゼロから始まる整数連番を持たなければ連想配列と見なす。

use Illuminate\Support\Arr;

$isAssoc = Arr::isAssoc(['product' => ['name' => 'Desk', 'price' => 100]]);
// true
$isAssoc = Arr::isAssoc([1, 2, 3]);
// false

Arr::isList($array)

与えられた配列のキーがゼロから始まる整数連番か調べる。

use Illuminate\Support\Arr;

$isAssoc = Arr::isList(['foo', 'bar', 'baz']);
// true
$isAssoc = Arr::isList(['product' => ['name' => 'Desk', 'price' => 100]]);
// false

Arr::last($array, callable $callback = null, $default = null)

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

use Illuminate\Support\Arr;

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

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

use Illuminate\Support\Arr;

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

Arr::only($array, $keys)

与えられた配列から指定されたキー/値のペアだけを返す。

use Illuminate\Support\Arr;

$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];
$slice = Arr::only($array, ['name', 'price']);
// ['name' => 'Desk', 'price' => 100]

Arr::pluck($array, $value, $key = null)

配列から与えられたキーに関する全ての値を取得する。

use Illuminate\Support\Arr;

$array = [
    ['developer' => ['id' => 1, 'name' => 'Taylor']],
    ['developer' => ['id' => 2, 'name' => 'Abigail']],
];
$names = Arr::pluck($array, 'developer.name');
// ['Taylor', 'Abigail']

結果リストのキー付けの方法も指定できる。

use Illuminate\Support\Arr;

$names = Arr::pluck($array, 'developer.name', 'developer.id');
// [1 => 'Taylor', 2 => 'Abigail']

Arr::prepend($array, $value, $key = null)

配列の先頭に項目を追加(プッシュ)する。

use Illuminate\Support\Arr;

$array = ['one', 'two', 'three', 'four'];
$array = Arr::prepend($array, 'zero');
// ['zero', 'one', 'two', 'three', 'four']

必要ならば値に使われるキーも指定できる。

use Illuminate\Support\Arr;

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

Arr::pull(&$array, $key, $default = null)

キー/値のペアを返して配列からは削除する。

use Illuminate\Support\Arr;

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

キーが存在しない場合に返される値を3番目の引数に指定できる。

use Illuminate\Support\Arr;

$value = Arr::pull($array, $key, $default);

Arr::query($array)

配列をクエリー文字列に変換する。

use Illuminate\Support\Arr;

$array = [
    'name' => 'Taylor',
    'order' => [
        'column' => 'created_at',
        'direction' => 'desc'
    ]
];
Arr::query($array);
// name=Taylor&order[column]=created_at&order[direction]=desc

Arr::random($array, $number = null, $preserveKeys = false)

配列からランダムな値を返す。

use Illuminate\Support\Arr;

$array = [1, 2, 3, 4, 5];
$random = Arr::random($array);
// 4 - (retrieved randomly)

返す項目の数を2番目の引数に指定できる。2番目の引数が指定された場合は、値が1つだけ必要な場合でも配列が返される。

use Illuminate\Support\Arr;

$items = Arr::random($array, 2);
// [2, 5] - (retrieved randomly)

Arr::set(&$array, $key, $value)

ドット表記を使ってネストが深い配列に値をセットする。

use Illuminate\Support\Arr;

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

Arr::shuffle($array, $seed = null)

配列中の項目をランダムにシャッフルする。

use Illuminate\Support\Arr;

$array = Arr::shuffle([1, 2, 3, 4, 5]);
// [3, 2, 5, 1, 4] - (generated randomly)

Arr::sort($array, $callback = null)

値で配列をソートする。

use Illuminate\Support\Arr;

$array = ['Desk', 'Table', 'Chair'];
$sorted = Arr::sort($array);
// ['Chair', 'Desk', 'Table']

与えられた無名関数の結果で配列をソートすることもできる。
use Illuminate\Support\Arr;
$array = [
    ['name' => 'Desk'],
    ['name' => 'Table'],
    ['name' => 'Chair'],
];
$sorted = array_values(Arr::sort($array, function ($value) {
    return $value['name'];
}));
/*
    [
        ['name' => 'Chair'],
        ['name' => 'Desk'],
        ['name' => 'Table'],
    ]
*/

続く。