Call to a member function map() on arrayというエラーが出た時の対処法

PHP(Laravel)でmapメソッドを使用した時に以下のエラー文が表示された際の対処法を紹介します。

Call to a member function map() on array

原因

Laravelのmap()はコレクション配列で使用することができるメソッドです。
なので配列でmap()メソッドを使用したい場合laravelのヘルパ関数で配列をコレクション配列にする必要があります。

コレクションとは


コレクションとはLaravel独自の形式で配列を操作する機能が拡張されたラッパーのことを言います。
配列をコレクション形式に変換してLaravelで定義されているメソットを呼び出すと様々な操作や機能を簡単に実装することができます。

https://readouble.com/laravel/8.x/ja/collections.html

エラーになる例

配列なのでエラーになります。

$collection = [1, 2, 3, 4, 5];

$multiplied = $collection->map(function ($item, $key) {
    return $item * 2;
});

$multiplied->all();

// Call to a member function map() on array

解決方法

collect()メソッドでコレクション配列にすることでmap()が使えるようになります。
もしくはコレクション配列にはせずシンプルにforeachでループしてやるとエラーを回避することができます。

$collection = collect([1, 2, 3, 4, 5]);

$multiplied = $collection->map(function ($item, $key) {
    return $item * 2;
});

$multiplied->all();

// [2, 4, 6, 8, 10]

コメントを残す

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。