2016-05-28 3 views
0

эти коды с каркасом CodeIgniter,получать отфильтрованный массив из массива с условием PHP

У меня есть ниже массив $ csv_array

Array ([0] => Array ([location] => X33 [usernumber] => 1 [order] => XX [part_number] => Hi) [1] => Array ([location] => X33 [usernumber] => 1 [order] => XX [part_number] => 68730) [2] => Array ([location] => W33 [usernumber] => 2 [order] => YY [part_number] => 68741) [3] => Array ([location] => W33 [usernumber] => 2 [order] => YY [part_number] => Hello) 

Мои требования,

создать массив для каждого usernumber (здесь 2 разных пользователя), который содержит местоположение, номер_обучения, порядок, а затем отправляет электронное письмо только 2 раза, 1 каждому пользователю информацию о массиве, сгенерированном для каждого из них,

Я попытался выполнить код шага, но я проиграл в цикле! более

foreach ($csv_array as $row) 
      { 
       $user = $this->admin_model->get_usershipment($row['usernumber']); 
       $order_data = array(); 

       for ($i=0; $i < count($csv_array); $i++) 
       { 
        if($row['usernumber'] == $user->usernumber) 
        { 
         //Create some array to send???? 
         $order_data = array(); 

         //Should be something like below, but should contain for usernumber 1 only, and then in 2nd email it should be for usernumber 2 only 
         //$order_data = array('location' => $row['location'], 'part_number' => $row['part_number'], 'order' => $row['order']); 
        } 
       } 

       $data = array(
        'user_firstname' => $user->user_firstname, 
        'user_email'  => $user->user_email, 
        'order_data' => $order_data); 

       $subject = 'Hello Update! '; 
       $message = $this->parser->parse('templates/notification', $data, TRUE); 

       $this->emailnotification($user->user_email, $subject, $message); 
      } 

Одна проблема здесь состоит в том, что emailnotification фикцию будет работать в 4 раза, что я хочу только 2 раза, означает только 2 пользователей,

Любое руководство, как я могу добиться этого?

Заранее благодарен!

ответ

0

Может быть много подходов, если я правильно вас пойму. Одно решение может быть (это просто демо-версия, чтобы изменить его): -

foreach($csv_array as $row) 
{ 
    $csv_array1[$row['usernumber']][] = $row 
} 
foreach ($csv_array1 as $key=>$details) 
{ 

    $user = $this->admin_model->get_usershipment($key); 
    $data = array(
      'user_firstname' => $user->user_firstname, 
      'user_email'  => $user->user_email, 
      'order_data' => $details);//$details has 2 arrays for each user 
    $subject = 'Hello Update! '; 
    $message = $this->parser->parse('templates/notification', $data, TRUE); 
    $this->emailnotification($user->user_email, $subject, $message); 
} 
+0

Да, я думаю, это поможет отправить электронное письмо, если оно не отправлено ранее в цикле, но как я могу создать фильтрованный массив для конкретного количества? здесь его $ order_data – rjcode

+0

@rjcode Что такое $ order_data ?? –

+0

И для каждого пользователя есть 2 заказа, которые вы хотите отправить как уведомление? –

Смежные вопросы