Laravelのコレクション配列からNULLを検索し置換する方法

この記事には広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

コレクション配列の中身の置換

キー無しコレクション配列

php
$collection = collect([[1, 2, null, 4, null, 6], [1, 2, null, 4, null, 6]]);
$collection = $collection->map(function ($array) {
    return collect($array)->map(function ($item) {
        return $item ?? 0;
    })->all();
});

このコードでは、まずcollectメソッドでコレクション配列を作成し、それからmapメソッドを使用して各配列内の要素を処理しています。内側のmapメソッドは各配列内の要素を処理し、nullを0に置換しています。

キーありコレクション配列

php
$collection = collect([
    [
        "id" => 1,
        "name" => "hogehoge",
    ],
    [
        "id" => 1,
        "name" => null,
    ]
]);

$collection = $collection->map(function ($item) {
    return collect($item)->map(function ($value, $key) {
        return is_null($value) ? 'gitigeek' : $value;
    })->all();
});

特定のキーのみを対象とする

php
$collection = collect([
    [
        "id" => 1,
        "name" => "hogehoge",
    ],
    [
        "id" => 1,
        "name" => null,
    ]
]);

$collection = $collection->map(function ($item) {
    if (!$item['name']) {
        $item['name'] = 'gitigeek';
    }
    return $item;
});

単一のコレクションの置換

コレクションの配列ではなく、単一のコレクションの場合はシンプルです。

次のいずれかの方法を使用して、Laravelのコレクション内のnull値を置換することができます。

サンプルではNULLを0に置換します。

mapメソッドを使用する方法

php
$collection = collect([1, 2, null, 4, null, 6]);
$collection = $collection->map(function ($item) {
    return $item ?? 0;
});

この例では、mapメソッドを使用してコレクション内の各要素を処理し、null値を0に置換しています。

filterとmapメソッドの組み合わせ

php
$collection = collect([1, 2, null, 4, null, 6]);
$collection = $collection->filter()->map(function ($item) {
    return $item ?? 0;
});

この例では、filterメソッドを使用してnull以外の要素を抽出し、その後mapメソッドでnullを0に置換しています。

コレクションのeachメソッド:

php
$collection = collect([1, 2, null, 4, null, 6]);
$collection->each(function (&$item) {
    $item = $item ?? 0;
});

ここでは、eachメソッドを使用して各要素を処理し、nullを0に置換しています。注意すべき点は、コールバック関数内で引数を参照渡しすることです(&$item)。