2015-11-09 20 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

按照錯誤'$ products'應該是一個數組,首先將數據轉換爲數組。還檢查傳遞的變量是否爲數組 –

+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()...爲我返回空@ PeterPan666 –

+0

echo不顯示數組,嘗試用dd($ products-> toArray()); – PeterPan666