【Laravel】Laravel5.7のヘルパーを一気に勉強(4) – 配列とオブジェクトその4




Arr::random()

配列からランダムに値を取得します。
第二パラメーターで取得する数を指定することもできます。

$datas = ['aaa', 'bbb', 'cccc', 'ddd', 'eee', 'aaabbb'];
$result = Arr::random($datas);
echo $result . PHP_EOL;
// pullみたいに配列の中身がなくなることはない
print_r($datas);
// 複数取得も可
$result = Arr::random($datas, 3);
print_r($result);
/*
aaabbb
Array
(
    [0] => aaa
    [1] => bbb
    [2] => cccc
    [3] => ddd
    [4] => eee
    [5] => aaabbb
)
Array
(
    [0] => bbb
    [1] => cccc
    [2] => ddd
)
*/

Arr::set()

ドット記法を使用して配列に値をセットします。

$datas = [
    0 => ['name' => 'あああ', 'kana' => 'aaa', 'age' => 11],
    1 => ['name' => 'いいい', 'kana' => 'iii', 'age' => 22],
    2 => ['name' => 'ううう', 'kana' => 'uuu', 'age' => 33],
];
Arr::set($datas, '0.name', 'zzzz');
Arr::set($datas, 'aaa.bbb.ccc.ddd', 'zzzz');
print_r($datas);
/*
Array
(
    [0] => Array
        (
            [name] => zzzz
            [kana] => aaa
            [age] => 11
        )

    [1] => Array
        (
            [name] => いいい
            [kana] => iii
            [age] => 22
        )

    [2] => Array
        (
            [name] => ううう
            [kana] => uuu
            [age] => 33
        )

    [aaa] => Array
        (
            [bbb] => Array
                (
                    [ccc] => Array
                        (
                            [ddd] => zzzz
                        )
                )
        )
)
*/

Arr::sort()

配列の値でソートします。


$datas = ['あああ', 'aaa', 11];
$result = Arr::sort($datas);
print_r($result);
/*
Array
(
    [1] => aaa
    [0] => あああ
    [2] => 11
)
*/

Arr::sortRecursive()

多重配列に対して全てのデータを再帰的にソートします。
キーが数値の配列に対しては値でソート、連想配列に対してはキーでソートします。

$users = [
    2 => ['Madai', 'Kanpachi', ['Saba', 'Iwashi', 'Aji'], ['name' => '氏名', 'kana' => 'ふりがな', 'email' => 'メールアドレス']],
    1 => ['Judo', 'Swimming', 'Marathon', 'Baseball'],
    0 => [5, 2, 9, 7],
];
$sorted = Arr::sortRecursive($users);
print_r($sorted);
/*
Array
(
    [0] => Array
        (
            [0] => 2
            [1] => 5
            [2] => 7
            [3] => 9
        )
    [1] => Array
        (
            [0] => Baseball
            [1] => Judo
            [2] => Marathon
            [3] => Swimming
        )
    [2] => Array
        (
            [0] => Kanpachi
            [1] => Madai
            [2] => Array
                (
                    [email] => メールアドレス
                    [kana] => ふりがな
                    [name] => 氏名
                )
            [3] => Array
                (
                    [0] => Aji
                    [1] => Iwashi
                    [2] => Saba
                )
        )
)
*/

Arr::where()

クロージャで条件を指定し、配列を絞り込みます。

$datas = ['uううう', 'iいいい', 'aあああ'];
$result = Arr::where($datas, function ($value, $key) {
    return preg_match('/^a/', $value);
});
print_r($result);
/*
Array
(
    [2] => aあああ
)
*/