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




前回の配列とオブジェクトに関するヘルパー関数の続きです。

Arr::first()

指定した条件に最初に一致する値を返します。
多次元配列は処理されないので注意です。

$datas = ['sea' => ['Aji', 'Saba', 'Iwashi'], 'river' => ['Ayu', 'Yamame', 'Iwana']];
$first = Arr::first($datas['sea'], function ($value, $key) {
    return $value == 'Iwashi';
});
echo 'first->' . $first;
/*
first->Iwashi
*/

$datas = ['aaa', 'bbb', 'cccc', 'ddd', 'eee', 'aaabbb'];
$first = Arr::first($datas, function ($value, $key) {
    return preg_match('/^a/', $value);
});
echo 'first->' . $first;
/*
first->Iwashifirst->aaa
*/

Arr::flatten()

多次元配列を一次元配列に変換します。
Arr::collapse()と違い、多次元配列の値もすべて一次元配列に変換します。

$datas = ['sea' => ['Aji', 'Saba', 'Iwashi'], 'river' => ['Ayu', 'Yamame', 'Iwana'], 'other' => ['aaa' => ['bbb' => ['cccc' => 'zzzz']]]];
$result = Arr::flatten($datas);
print_r($result);
/*
Array
(
    [0] => Aji
    [1] => Saba
    [2] => Iwashi
    [3] => Ayu
    [4] => Yamame
    [5] => Iwana
    [6] => zzzz
)

*/

Arr::forget()

していしたキーを削除します。
多次元配列のキーはドット記法で指定します。

$datas = ['sea' => ['Aji', 'Saba', 'Iwashi'], 'river' => ['Ayu', 'Yamame', 'Iwana'], 'other' => ['aaa' => ['bbb' => ['cccc' => 'zzzz']]]];
Arr::forget($datas, 'other');
print_r($datas);
/*
Array
(
    [sea] => Array
        (
            [0] => Aji
            [1] => Saba
            [2] => Iwashi
        )

    [river] => Array
        (
            [0] => Ayu
            [1] => Yamame
            [2] => Iwana
        )
)
*/

Arr::get()

指定したキーの値を取得します。
多次元配列の場合、ドット記法で指定します。

$datas = ['sea' => ['Aji', 'Saba', 'Iwashi'], 'river' => ['Ayu', 'Yamame', 'Iwana'], 'other' => ['aaa' => ['bbb' => ['ccc' => 'zzzz']]]];
$value = Arr::get($datas, 'other.aaa.bbb.ccc');
print_r($value);
/*
zzzz
*/

Arr::has()

指定したキーが存在するかチェックします。
多次元配列のキーはドット記法で指定します。

// 指定したキーが存在する場合
$datas = ['sea' => ['Aji', 'Saba', 'Iwashi'], 'river' => ['Ayu', 'Yamame', 'Iwana'], 'other' => ['aaa' => ['bbb' => ['ccc' => 'zzzz']]]];
$result = Arr::has($datas, 'other.aaa.bbb.ccc');
echo $result == true ? 'true' : 'false';
/*
true
*/

// 指定したキーが存在しない場合
$datas = ['sea' => ['Aji', 'Saba', 'Iwashi'], 'river' => ['Ayu', 'Yamame', 'Iwana'], 'other' => ['aaa' => ['bbb' => ['ccc' => 'zzzz']]]];
$result = Arr::has($datas, 'other.aaa.bbb.ccc.ddd');
echo $result == true ? 'true' : 'false';
/*
false
*/

// 指定したキーが全て存在する場合
$datas = ['sea' => ['Aji', 'Saba', 'Iwashi'], 'river' => ['Ayu', 'Yamame', 'Iwana'], 'other' => ['aaa' => ['bbb' => ['ccc' => 'zzzz']]]];
$result = Arr::has($datas, ['other.aaa.bbb.ccc', 'sea']);
echo $result == true ? 'true' : 'false';
/*
true
*/

// キーが1つでも存在しない場合
$datas = ['sea' => ['Aji', 'Saba', 'Iwashi'], 'river' => ['Ayu', 'Yamame', 'Iwana'], 'other' => ['aaa' => ['bbb' => ['ccc' => 'zzzz']]]];
$result = Arr::has($datas, ['other.aaa.bbb.ccc.ddd', 'sea']);
echo $result == true ? 'true' : 'false';
/*
false
*/