所以基本上我有以下表格:
users
id - email - username - password
和
todo
id - user_id - name - description - reminder - reminder_date
我想向每个用户发送一封电子邮件,通知他们在提醒_date ='今天'时他们有一些任务要做。这将由一个cron作业处理。 问题是我已经设法提取用户,我可以轻松地向这些用户发送电子邮件,但我也想在电子邮件正文中发送“todo.name”,以便他们知道当天应该完成的任务。
到目前为止,我有以下内容:
$users = DB::select()->from('todo')->join('users', 'INNER')->on('todo.user_id', '=', 'users.id')
->where('todo.reminder', '=', 1)->and_where('reminder_date', '=', Date::formatted_time('now', 'Y-m-d'))->and_where('todo.status', '=', 'active')
->execute()
->as_array();
以及以下内容:
$count = 0;
foreach ($users as $k => $v) {
$count++;
$allemails[] = $v['email'];
$mailsUnique = array_unique($allemails);
}
$max = sizeof($mailsUnique);
for ($i = 0; $i < $max; $i++) {
foreach ($users as $k) {
if ($mailsUnique[$i] == $k['email']) {
$task[$mailsUnique[$i]][] = $k['task'];
} else {
}
}
}
使用以下代码,我有一个包含每个电子邮件的每个任务的多个数组。我似乎无法弄清楚如何向每个用户发送一封电子邮件,每个“任务名称”对应于该用户作为邮件正文。
例如:
array(2) (
"someEmail.yyy@provider.com" => array(1) (
0 => string(6) "Do something" <--- Task Name
1 => string(6) "Do something else" <--- Task Name
)
"otherEmail@provider.com" => array(1) (
0 => string(6) "aaaaaa" <--- Task Name
)
)
谢谢!
答案 0 :(得分:1)
您可以使用key => value
循环遍历外部数组以提取电子邮件地址。它看起来像这样:
foreach ( $array as $email => $tasks ) {
foreach ( $tasks as $task ) {
// send email to $email for each task or put together the list of tasks to put into one email below this loop.
}
}