お問い合わせ

ブログ

これまでに経験してきたプロジェクトで気になる技術の情報を紹介していきます。

Laravel Helper 配列関係で使いたいもの

okuda Okuda 3 years

配列の先頭や最後がほしいとき

配列の先頭や最後がほしいとき end($array) , last($array) を使用するがこれをわかりやすくする。
内部的にはreset($array)とend($array)を返しているだけ。

  • head()
  • last()
$array = [111, 222, 333];
head($array); // 111
last($array); // 333

配列の中身を取得

$array = [
    'aaa' => [,
        'xxx' => '11',
        'yyy' => '12',
        'zzz' => '13',
    ],
];

// これをもっとシンプルにわかりやすくする
$value = $array['aaa']['xxx'] ?? false;
  • Arr::get()
  • data_get()
// キーがない場合はエラーにならずnullが返る
$value = Arr::get($array, 'ccc'); // null
// デフォルトが指定できる
$value = Arr::get($array, 'ccc', false); // false
// dot記法が使える
$value = Arr::get($array, 'aaa.xxx', false); // 11

// シュガーシンタックスでもっとシンプル
$value = data_get($array, 'aaa.yyy', false); // 12

配列のに値をセット

$array = [
    'aaa' => [
        'xxx' => '11',
        'yyy' => '12',
        'zzz' => '13',
    ],
];

// これをもっとシンプルにわかりやすくする
$array['aaa']['xxx'] = '1-1';
  • Arr::set()
  • data_set()
// dot記法が使える
Arr::set($array, 'aaa.xxx', '1-1');

// シュガーシンタックスでもっとシンプル
$value = data_set($array, 'aaa.yyy', '1-2');

配列の削除

unsetarray_splicearray_shiftarray_pop などを使うので書き方がばらける

$array = [
    'aaa' => [
        'xxx' => '11',
        'yyy' => '12',
        'zzz' => '13',
    ],
    'bbb' => [
        'xxx' => '21',
        'yyy' => '22',
        'zzz' => '23',
    ],
];

// これをもっとシンプルにわかりやすくする
array_splice($array, 1);
unset($array['aaa']['zzz']);
  • Arr::forget()
// キーで指定できる
Arr::forget($array, 'bbb');
// dot記法が使える
Arr::forget($array, 'aaa.zzz');

キーとバリューの配列にする


$array = [
    [
        'id' => 1,
        'developer' => [
            'code' => '1a',
            'name' => 'Taylor',
            'Taylor' => ['age' => 21],
        ]
    ],
    [
        'id' => 2,
        'developer' => [
            'code' => '2a',
            'name' => 'Abigail',
            'Abigail' => ['age' => 24],
        ]
    ],
];

// これだと何してるかわかりにくい
$users = array_column($array, 'developer', 'id');
dump($users);
  • Arr::pluck()
// プルックしてるのがわかる
$users = Arr::pluck($array, 'developer', 'id');
dump($users);
// dot記法が使える
$users = Arr::pluck($array, 'developer.name', 'developer.code');
dump($users);
// nullで全部取れる
$users = Arr::pluck($array, null, 'developer.code');
dump($users);

先頭、末尾に値を追加

array_unshiftarray_merge+ なんかでばらける

$array = [
    'aaa' => [
        'xxx' => '11',
        'yyy' => '12',
        'zzz' => '13',
    ],
    'bbb' => [
        'xxx' => '21',
        'yyy' => '22',
        'zzz' => '23',
    ],
];

// キーがつかない
array_unshift($array, [
        'xxx' => '21',
        'yyy' => '22',
        'zzz' => '23',
    ]);
// わかりにくい
$array = array_merge(['ccc' => null], $array);
  • Arr::prepend()
  • Arr::add()
// 先頭に追加
// キーが使える
$array = Arr::prepend($array, null, 'top');
dump($array);

// 末尾に追加
// キーとバリューが反対なので注意!
$array = Arr::add($array, 'bottom', null);
dump($array);

ランダムに取得

$array = [
        'user' => 'Desk',
        'user' => 'Table',
        'user' => 'Chair',
    ];

// キーが有るとできない
dump(array_rand($array, 1));
  • Arr::random()
// キーが有っても取得できる
$rand = Arr::random($array, 1);
// キーを残して取得
$rand = Arr::random($array, 1, true);

並び替え

$array = [
    [
        'id'        => 3,
        'kana' => 'かきくけこ',
        'str'    => ''
    ],
    [
        'id'        => 2,
        'kana' => 'さしすせそ',
        'str'     => 1,
    ],
    [
        'id'        => 1,
        'kana' => 'あいうえお',
        'str'    => '1'
    ],
];

// わかりにくい
array_multisort(array_column($array, 'kana'), SORT_ASC, $array);
  • Arr::sort()
  • collect()
// シンプルに書ける
// DESCができない!
$array = Arr::sort($array, 'kana');
dump($array);

// ヘルパーからははずれるが汎用性があるので紹介
// Arr::sortは内部的には以下となっている
$array = collect($array)->sortBy('kana')->all();
dump($array);
// Descはこうかける
$array = collect($array)->sortByDesc('kana')->all();
dump($array);
Laravel Helper 配列関係で使いたいもの 2021-11-18 10:27:35

コメントはありません。

4646

お気軽に
お問い合わせください。

お問い合わせ
gomibako@aska-ltd.jp