2016-10-26 19 views
0

は異なる内容で各ユーザーに1通の電子メールを送信しますreminder_date = 'today'のときに行うべきいくつかのタスクがあることを通知します。これは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 { 
       } 
      } 
      } 

を、私は、各電子メールのために、各タスクとマルチ配列を持っています。そのユーザーに対応する「タスク名」がメール本文として1つのメールを各ユーザーに送信する方法を把握していないようです。例えば

array(2) (
    "[email protected]" => array(1) (
     0 => string(6) "Do something"   <--- Task Name 
     1 => string(6) "Do something else" <--- Task Name 
    ) 
    "[email protected]" => array(1) (
     0 => string(6) "aaaaaa"    <--- Task Name 
    ) 
) 

ありがとう!

答えて

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. 
    } 
} 
関連する問題