向数据库

时间:2016-10-26 19:03:21

标签: php mysql kohana

所以基本上我有以下表格:

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

谢谢!

1 个答案:

答案 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.
    }
}