laravel array_map 出现错误“array_map():参数 #2 应该是一个数组”

问题描述 投票:0回答:1

我是 Laravel 的新手。为什么我总是遇到错误:

array_map():参数 #2 应该是一个数组?

而我在此方法上分配参数数组?

这是我的示例代码:

$products = Category::find(1)->products;

注意: 1个类别有很多产品

这是查询中的数组:

[{
   "id": "1",
   "name": "action figure",
   "created_at": "2015-11-09 05:51:25",
   "updated_at": "2015-11-09 05:51:25"
    }, {
    "id": "2",
    "name": "manga",
    "created_at": "2015-11-09 05:51:25",
    "updated_at": "2015-11-09 05:51:25"
}]

当我尝试以下代码时:

$results = array_map( function($prod) {
    return $prod.name;
}, $products);

我收到如下错误:

“array_map():参数 #2 应该是一个数组”

php arrays laravel has-many
1个回答
9
投票

你应该写

$results = array_map(function ($prod) {
    return $prod->name;
}, $products->toArray());

因为

$products
是一个集合而不是一个数组。

如果您只想获得产品名称列表,请使用

pluck
方法

$results = $products->pluck('name')

在较新版本的 Laravel 中,您应该使用

$products->all();
而不是
toArray
,因为在 Eloquent 集合的情况下,
toArray
也会尝试将模型转换为数组。
all
将按原样返回模型数组。

话虽这么说,既然你在一个集合上,你也可以像这样使用

map
方法(这与你的情况下使用
pluck
完全相同)

$products->map(function ($product) {
    return $product->name;
});
© www.soinside.com 2019 - 2024. All rights reserved.