Php 发送邮件时未定义变量$email-即使该变量存在?
在Laravel 4.2中,我有一系列需要发送消息的电子邮件。这个数组是Php 发送邮件时未定义变量$email-即使该变量存在?,php,laravel,laravel-4,Php,Laravel,Laravel 4,在Laravel 4.2中,我有一系列需要发送消息的电子邮件。这个数组是 $email_arr = ["me@yahoo.com","friend@gmail.com"] 现在我的逻辑是简单地遍历电子邮件数组并向每个数组发送消息,如下所示: foreach($email_arr as $email){ Mail::send('emails.invite', array('pool_code' => 'test'), function($message) {
$email_arr = ["me@yahoo.com","friend@gmail.com"]
现在我的逻辑是简单地遍历电子邮件数组并向每个数组发送消息,如下所示:
foreach($email_arr as $email){
Mail::send('emails.invite', array('pool_code' => 'test'), function($message) {
$message->to($email)->subject('Join my capture pool!');
});
}
但是,我在指向$message->to($email)->subject('Join my capture pool!')时出错
表示未定义变量:email
我发现这很奇怪,因为变量显然存在,如果我echo$email
在循环中,它会正确打印出每封电子邮件
那么这里发生了什么呢?您有(又称闭包),它的范围内没有$email
闭包(匿名函数)也可以从父作用域继承变量。任何此类变量都必须传递给use
语言结构
您必须将use
添加到此函数中
foreach($email_arr as $email){
Mail::send('emails.invite', array('pool_code' => 'test'), function($message) use($email) {
$message->to($email)->subject('Join my capture pool!');
});
}
是的,就是这样。谢谢我将在10分钟内接受答案。