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




この記事は最終更新日から2年以上経過しています。

Arr::wrap()

文字列を配列化します。
文字列が空・NULLの場合は空配列を返します。

$data = 'Laravel';
$result = Arr::wrap($data);
print_r($result);
/*
Array
(
    [0] => Laravel
)
*/

// NULLの場合は空配列を返す
$data = null;
$result = Arr::wrap($data);
print_r($result);
/*
Array
(
)
*/

data_fill()

指定したキーが存在しない場合、データを追加します。
存在するキーに対してはデータ変更は行いません。
キーはドット記法で指定します。

$datas = [
    ['name' => 'Madai', 'price' => 1000,],
    ['name' => 'Kanpachi', 'price' => 1500,],
    ['name' => 'Saba',],
];
$result = data_fill($datas, '*.price', 100);
print_r($result);
/*
Array
(
    [0] => Array
        (
            [name] => Madai
            [price] => 1000
        )
    [1] => Array
        (
            [name] => Kanpachi
            [price] => 1500
        )
    [2] => Array
        (
            [name] => Saba
            [price] => 100
        )
)
*/

data_get()

配列から指定したキーに対応する値を取得します。
キーはドット記法で指定します。
対応する値が複数ある場合は配列で結果を返します。

$datas = [
    ['name' => 'Madai', 'price' => 1000,],
    ['name' => 'Kanpachi', 'price' => 1500,],
    ['name' => 'Saba',],
];
$result = data_get($datas, '*.name');
print_r($result);
/*
Array
(
    [0] => Madai
    [1] => Kanpachi
    [2] => Saba
)
*/

// 1次元配列の場合は文字列が返ってくる
$datas = [
    'name' => 'Saba',
];
$result = data_get($datas, 'name');
print_r($result);
/*
Saba
*/


// キーが存在しない場合のデフォルト値(ワイルドカード指定した時はデフォルト値は有効にならない)
$result = data_get($datas, '*.price', 'zzz');
print_r($result);
/*
Array
(
    [0] => 1000
    [1] => 1500
    [2] => 
)
*/

// ワイルドカードを指定したときはデータが存在しなくてもキーの数だけ空が格納された配列が返ってくる
$result = data_get($datas, '*.some', 'zzz');
print_r($result);
/*
Array
(
    [0] => 
    [1] => 
    [2] => 
)
*/

// 特定のキーの場合、存在しなかったらデフォルト値
$result = data_get($datas, '2.price', 'zzz');
print_r($result);
/*
zzz
*/

data_set()

指定したキーに値を追加します。
キーはドット記法で指定します。
存在するキーは上書きします。
上書きしたくない時は第4引数にfalseを設定します。

$datas = [
    ['name' => 'Madai', 'price' => 1000,],
    ['name' => 'Kanpachi', 'price' => 1500,],
    ['name' => 'Saba',],
];
// *.priceすべて100で上書きする
data_set($datas, '*.price', 100);
print_r($datas);
/*
Array
(
    [0] => Array
        (
            [name] => Madai
            [price] => 100
        )
    [1] => Array
        (
            [name] => Kanpachi
            [price] => 100
        )
    [2] => Array
        (
            [name] => Saba
            [price] => 100
        )
)
*/

$datas = [
    ['name' => 'Madai', 'price' => 1000,],
    ['name' => 'Kanpachi', 'price' => 1500,],
    ['name' => 'Saba',],
];
// *.priceが存在しないキーだけ100を設定
data_set($datas, '*.price', 100, false);
print_r($datas);
/*
Array
(
    [0] => Array
        (
            [name] => Madai
            [price] => 1000
        )
    [1] => Array
        (
            [name] => Kanpachi
            [price] => 1500
        )
    [2] => Array
        (
            [name] => Saba
            [price] => 100
        )
)
*/

head()

配列の先頭要素を取得します。

$datas = ['Judo', 'Swimming', 'Marathon', 'Baseball'];
echo head($datas) . PHP_EOL;
/*
Judo
*/

last()

配列の最後の要素を取得します。

$datas = ['Judo', 'Swimming', 'Marathon', 'Baseball'];
echo last($datas) . PHP_EOL;
/*
Baseball
*/