我正在尝试从数组循环向用户发送电子邮件。每封电子邮件都可以存在于多个数组元素中,但除了电子邮件之外,其余元素都不同。
我在下面的代码中尝试创建两个新数组 - 一个只有电子邮件而另一个有其他值,例如'name'等。我最终需要的是一个类似于:的数组p>
$array_final(
[0]email=>'whatever@com'=> (name1, name 2),
[1]email=>"second@.com"=>name3,name4
);
这是我的数组和循环:
$array_emailedinfo_email = array();//will hold just email
$array_emailedinfo = array();//will hold email and other date;
foreach($array_expiredmeetingscos as $mail) {
if(isset($checkAgainst[$mail[1]])) {
$array_emailedinfo_email[] = array(
"email" => $checkAgainst[$mail[1]]
);
$array_emailedinfo[] = array(
"email" => $checkAgainst[$mail[1]],
"name" => $mail[2]
);
}
}
我想我可能能够在foreach
循环中获得最终数组,但还没有想到这一点。我试过array_merge()
等但没有运气,顺便说一句。
有什么想法吗?感谢。
答案 0 :(得分:1)
我们有两个数组:
$emails = array(array('email' => 'foo@example.com'), array('email' => 'bar@example.com');
$emails_info = array(array('email' => 'foo@example.com', 'name' => 'Alice'), array('email' => 'bar@example.com', 'name' => 'Bob'));
现在,您希望循环$emails
并在$emails_info
中找到合适的值:
foreach ($emails as $email) {
$info = array_filter($emails_info, function($item) use ($email) {
return $item['email'] == $email['email'];
});
// because $emails_info[index]['email'] might not be unique, $info is array of such items
print_r($info);
}
但我认为使用给定的电子邮件索引一个或两个数组会更容易,例如
//variable from your question
$array_emailedinfo['foo@example.com'] = array(array('email' => 'foo@example.com', 'name' => 'Alice'));
修改强>
在数组中找到适当项目的函数:
function find_in_emails($emails_info, $email) {
foreach ($emails_info as $email_info) {
if ($email_info['email'] == $email)
return $email_info;
}
//not found...
return array();
}
//usage
//...loop...
$info = find_in_emails($emails_info, $email['email']);
//...endloop...
答案 1 :(得分:0)
以下是我修复它的方法。请注意,在新代码中,$ emails与$$ array_emailedinfo_email相同,$ emails_info分别与原始Question中的$ array_emailedinfo相同。
$array_all_expired_info = array();
$i=0;
$temparray = array();
foreach ($emails as $email) {
if (is_array($email)) {
$array_all_expired_info[$i] = $email;
foreach($emails_info as $all_info) {
if (in_array($email["email"],$all_info)) {
$array_all_expired_info[$i][] = $all_info;
}
}
}
$i++;
} //对
最后一个数组接近我所需要的:第一个元素就是电子邮件,其余部分是相应元素中的数组。所以现在我可以遍历所有元素,抓取电子邮件,然后获取相应的数据(可能是多个,每封电子邮件),只需发送电子邮件。
这一切都不容易。但是在这个过程中学到了一些关于php数组的东西。非常值得。
感谢。