前回の配列とオブジェクトに関するヘルパー関数の続きです。
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
*/