Codeigniter在Email类中使用关联数组

时间:2015-08-24 09:16:45

标签: php arrays codeigniter email

我有一个包含电子邮件列表的关联数组。它在下面给出:

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

正在访问get_list_of_emails($id)方法的相应模型代码:

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

修改

尽管Hassaan的答案是最简单的解决方案并且完全满足我的需求,但我仍然感谢能够提供从查询中仅检索一列的方法的答案。一栏。

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

$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。

5 个答案:

答案 0 :(得分:3)

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

尝试示例

foreach($list_of_emails as $email)
{
    echo $email."<br />";
    // You can call '$this->mail->to()' to mail.
}

答案 1 :(得分:2)

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

implode

要生成此类字符串,请执行以下步骤:

不要碰你的模特

使用PHP array_columnemail函数提取$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); 字段并用逗号连接所有数组元素:

$email_list

您可以打印var_dump($email_list); exit;以确保通过调用array_map确保格式正确。

编辑(如果您使用的是PHP&lt; 5.5)

使用$columnName函数,并将第一个参数设为anyonimus函数。通过定义 $columnName = "email"; $result = array_map( function ($arrayRow) use ($columnName){ return $arrayRow[$columnName]; } ,$data['list_of_emails']); var_dump(implode(",",$result)); $this->email->to($result ); ,您可以提取所需的任何列。

select  L.Name
from    Manager M
join    Relation R 
on      R.PrimaryId = M.Id
join    Lead L
on      R.SecondaryId = L.Id
where   M.Id = 'M101'

答案 2 :(得分:1)

您可以array_column作为

$new_array = array_column('email');

答案 3 :(得分:1)

这应该有用!

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

答案 4 :(得分:0)

试试这可能会解决您的问题。

$query->result_array();

它将提供单维数组