2015-11-09 2 views
1

Я новичок на Laravel ... почему я всегда получаю ошибку:Laravel array_map получить ошибку «array_map(): Аргумент # 2 должен быть массив»

array_map(): Argument #2 should be an array ?

тогда я задаю параметр массив по этому методу?

это мой пример кода:

$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(): Argument #2 should be an array" 
+0

согласно ошибке '$' продуктов должен быть массивом, первым преобразовать данные в массив. также проверять пройденную переменную является массив или нет –

+0

как проверить данные типа на laravel @Chetan Ameta –

+0

с базовым php, вы можете 'var_dump' переменную для анализа переменной. Я думаю, что в вашем случае '$ products' является объектом –

ответ

2

Вы должны написать

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

Поскольку $products это коллекция, а не массив.

Если вы просто хотите, чтобы иметь список название продукта используют lists метод

$results = $products->lists('name') 
+0

echo $ products-> toArray() ... return empty for me @ PeterPan666 –

+0

echo не отображает массивы, попробуйте с 'dd ($ products-> toArray());' – PeterPan666

Смежные вопросы