我有一个包含电子邮件列表的关联数组。它在下面给出:
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。
答案 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_column
和email
函数提取$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
确保格式正确。
使用$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();
它将提供单维数组