2017-01-22 102 views
1

我使用Laravel 5.3的查詢構建器,嘗試添加一個where子句來找到某個標籤的文章:PHP foreach - 未定義的變量?

$tag_list = $request->tag_list; // tag_list is an array 
if (isset($tag_list)) { 
    foreach ($tag_list as $tag_id) { 
     $query = $query->whereHas('tags', function ($query) { 
      $query->where('id', $tag_id); 
     }); 
    } 
} 

當我傾倒$ tag_list我得到...

24 

但在循環中,我得到一個錯誤:

Undefined variable: tag_id 

我在做什麼錯?任何幫助表示讚賞!

+0

'24'不是數組 - 通過通過TAG_ID變量。 –

+0

你確定$ tag_list是一個數組嗎?如果你從var_dump返回的所有內容都是'24',那麼看起來var就是一個字符串或int。 – Joe

回答

5

因爲你在功能上下文中。 使用關鍵字

$tag_list = $request->tag_list; // tag_list is an array 
if (isset($tag_list)) { 
    foreach ($tag_list as $tag_id) { 
     $query = $query->whereHas('tags', function ($query) use ($tag_id) { 
      $query->where('id', $tag_id); 
     }); 
    } 
} 
+0

Ahhh我記得現在從一個Laracasts教程...謝謝@vuliad –

+1

僅供參考,另見http://php.net/manual/en/functions.anonymous.php,「Example#3從父範圍繼承變量」。 – localheinz