Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 电子邮件类中使用关联数组的Codeigniter_Php_Arrays_Codeigniter_Email - Fatal编程技术网

Php 电子邮件类中使用关联数组的Codeigniter

Php 电子邮件类中使用关联数组的Codeigniter,php,arrays,codeigniter,email,Php,Arrays,Codeigniter,Email,我有一个特定的关联数组,其中包含一个电子邮件列表。具体如下: Array ( [0] => Array ( [email] => mattfairburne@hotmail.com ) [1] => Array ( [email] => velazquez.alvaro@gmail.com ) [2] => Array

我有一个特定的关联数组,其中包含一个电子邮件列表。具体如下:

Array
(
    [0] => Array
        (
            [email] => mattfairburne@hotmail.com
        )

    [1] => Array
        (
            [email] => velazquez.alvaro@gmail.com
        )

    [2] => Array
        (
            [email] => pstangerson_1968@gmail.com
        )

    [3] => Array
        (
            [email] => anuj.galgotia@gmail.com
        )

)
它由以下控制器代码生成:

$data['list_of_emails'] = $this->Trainee_requisition->get_list_of_emails($id);
以及访问电子邮件($id)方法的
get\u list\u的相应模型代码:

function get_list_of_emails($id){
        $q = $this->db->query("SELECT `email` FROM `requisition_emails` WHERE `req_id` = $id")->result_array();
        return $q;
}
在Codeigniter文档中,我在Email类的
$this->mail->to()
方法中找到了一种传递一维数组的方法,但是没有关联数组的示例

我的问题是,如何在
$this->email->to()
方法中使用上述关联数组

我的主要目标是生成如下内容:

$email_list = array('mattfairburne@gmail.com', 'velazquez_alvaro@gmail.com', 'pstangerson_1968@gmail.com', 'anuj.galgotia@gmail.com');
$this->email->to($email_list);
$q = $this->db->query("SELECT rem.`email`, sr.`is_approve` AS approval_status FROM `requisition_emails` rem INNER JOIN `staff_requisitions` sr ON sr.`id` = rem.`req_id` WHERE rem.`req_id` = $id")->result_array();
编辑:

虽然的答案是最简单的解决方案,并且完全满足了我的需要,但我仍然希望答案能够提供一种方法,从具有多个列的查询中只检索一列

例如,如果我的查询修改如下:

$email_list = array('mattfairburne@gmail.com', 'velazquez_alvaro@gmail.com', 'pstangerson_1968@gmail.com', 'anuj.galgotia@gmail.com');
$this->email->to($email_list);
$q = $this->db->query("SELECT rem.`email`, sr.`is_approve` AS approval_status FROM `requisition_emails` rem INNER JOIN `staff_requisitions` sr ON sr.`id` = rem.`req_id` WHERE rem.`req_id` = $id")->result_array();
但是我只想从列表中使用
email
列,那么最好的方法是什么

编辑-2:


忘了提了。PHP版本是5.3。

您需要在视图中使用
foreach
循环

试一试

foreach($list_of_emails as $email)
{
    echo $email."<br />";
    // You can call '$this->mail->to()' to mail.
}
foreach($email作为$email列出电子邮件)
{
回显$email.“
”; //您可以调用“$this->mail->to()”来发送邮件。 }
试试这可能会解决您的问题

$query->result_array();

它将给出一维数组

您可以简单地
array\u column
如下

$new_array = array_column('email');
这应该管用

<?php  $array = array(array("email" => "mattfairburne@hotmail.com"), array("email" => "velazquez.alvaro@gmail.com")); $emailList = array_map('current', $array); print_r($emailList);

根据CI文档,您可以使用以下结构向多个收件人发送电子邮件:

$this->email->to('one@example.com, two@example.com, three@example.com');
要生成此类字符串,请执行以下步骤:

不要碰你的模型

使用PHP
内爆
array\u column
函数提取
电子邮件
字段,并用逗号连接所有数组元素:

$data['list_of_emails']=$this->Trainee_requisition->get_list_of_emails($id);//Get data from model as one dimensional string
$email_list = implode(',',array_column($data['list_of_emails'],'email'));//Implode array elements with comma as separator
$this->email->to($email_list);
通过调用
var\u dump($email\u list),您可以打印
$email\u list
,以确保格式正确;退出

编辑(如果您使用的是PHP<5.5) 使用
array\u map
函数,将第一个参数设为anyonimus函数。通过定义
$columnName
,可以提取所需的任何列

 $columnName = "email";
$result = array_map(
    function ($arrayRow) use ($columnName){
        return $arrayRow[$columnName];
    }
,$data['list_of_emails']);
var_dump(implode(",",$result));
$this->email->to($result );

我已经使用了你的方法,但是邮件只发送到最后一个id,即
anuj。galgotia@gmail.com
不要对其他人说。谢谢,伙计,它起作用了。问题出在我的后续代码中,我使用了
die()
。这就是为什么电子邮件总是只发送到一个地址。另外,我不得不把
$this->email->send()
放在
foreach()
里面。伙计,你能更新你的答案吗?我已经更新了我的问题,并寻找另一个小的增强。我想你没有正确地看到我的问题。我在模型代码中使用了
result\u array()
方法。在我的问题中,为了方便起见,我只获取了查询中的一列。如果我重新编写查询,使其返回多个列,该怎么办?那么我如何获取
电子邮件
?有更新,请检查并尝试!我正在测试。我一会儿再告诉你。谢谢
array\u column()
不适用于早于5.5的PHP版本。我的是5.3。这是你编辑问题后的评论。为了从您的模型中只检索一列提交的数组,请使用array_column函数,我在回答中使用了该函数。啊,最后:)看看更新的答案!