2017-01-22 77 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