我有一个数组:
$selected_emails =
array(6) {
[16781]=> "xxx@gmail.com",
[16782]=> "yyy@gmail.com",
[16785]=> "xxx@gmail.com,yyy@gmail.com",
[16789]=> "yyy@gmail.com",
[16751]=> "xxx@gmail.com,yyy@gmail.com,zzz@gmail.com",
[16729]=> "zzz@gmail.com,bbb@gmail.com",
}
上述数组的keys
是新闻ID,values
是通过电子邮件获取该新闻(新闻ID)的电子邮件。
我想在上面的数组中发送电子邮件的电子邮件,所以我需要通过电子邮件地址(唯一)对上面的数组进行排序,并使用他们需要获取的新闻ID的值,所以上面的数组应该如:
$final_array =
array(4) {
[xxx@gmail.com] => "16781,16785,16751",
[yyy@gmail.com] => "16782,16789,16751",
[zzz@gmail.com] => "16751,16729,",
[bbb@gmail.com] => "16729",
}
因此,在新数组中,我知道每封电子邮件需要发送哪些新闻。
不幸的是我不知道我怎么能做到这一点,我已经做了很多foreach
但没有一个工作正常。
如何实现这一目标?感谢
答案 0 :(得分:3)
$final_array = array();
foreach ($selected_emails as $newsletter => $emails) {
foreach (explode(',', $emails) as $email) {
$final_array[$email][] = $newsletter;
}
}
var_dump($final_array);
请注意,这会将简报ID存储为
答案 1 :(得分:0)
看看php中的array_flip()函数,它将键与值交换: http://www.php.net/manual/en/function.array-flip.php
然后使用ksort()按键对数组进行排序。
$selected_emails = array_flip($selected_emails);
ksort($selected_emails);
print_r($selected_emails);