Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 发送邮件时未定义变量$email-即使该变量存在?_Php_Laravel_Laravel 4 - Fatal编程技术网

Php 发送邮件时未定义变量$email-即使该变量存在?

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) {

在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) {
                $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分钟内接受答案。