2017-08-01 13 views
-1
に機能をforeachのために

それを設定し、すべての配列値を取得します。私は以下のforeach機能を持つPHP

foreach ($agg as $dep => $emails) 
{ 
    $result[] = [ 
     'DEPARTMENTID_FK' => $dep, 
     'to' => implode(',', $emails), 
    ]; 
} 

echo $to = $result[0]['to']; 

$host = 'smtp.office365.com'; 
    $port = '587'; 
    $username = '[email protected]; 
    $password = 'sw0052?'; 

    $headers = array(
    'Port'   => $port, 
    'From'   => $from, 
    'To'   => $to, 
    'Subject'  => $subject, 
    'Content-Type' => 'text/html; charset=UTF-8' 
    ); 

    $recipients = $to.", ".$bcc; 

    $smtp = Mail::factory('smtp', 
    array ('host' => $host, 
    'auth' => true, 
    'username' => $username, 
    'password' => $password)); 

    $mail = $smtp->send($recipients, $headers, $body); 

    if (PEAR::isError($mail)) { 
     echo("<p>" . $mail->getMessage() . "</p>"); 
    } else { 
     echo("<p>Message successfully sent!</p>"); 
    } 

今どのように私は$toのすべての値を得ることができますか?

今のところ私はこの$result[0]['to']を手動で編集して$result[1]['to']になる必要があります。

私はループでそれを取得したいです。出来ますか?

したがって、3つのデータがある場合、foreachで別のクエリを3回実行します。しますprint_r

Array ([0] => Array ([DEPARTMENTID_FK] => DP0023 [to] => [email protected],[email protected]) [1] => Array ([DEPARTMENTID_FK] => DP0026 [to] => [email protected])) 
+0

どのように表示されるように配列をvarダンプできますか?なぜあなたは$ result ** [0] ** ['to']を試すのか少し混乱しています – Andreas

+0

こんにちは@Andreasは私の更新された投稿を見てください –

+0

それは$ agg配列ですか?あなたは何をしようとしているのですか? – Andreas

答えて

2
// version 1 
foreach ($result as $item) { 
    echo $item['to']; 
} 


// version 2 
$dep_id = '1'; 
foreach ($result as $item) { 
    if ($dep_id == $item['DEPARTMENTID_FK']) { 
     echo $item['to']; 
     break; 
    } 
} 

// version 3 
foreach ($agg as $dep => $emails) 
{ 
    $result[$dep] = [ 
     'DEPARTMENTID_FK' => $dep, 
     'to' => implode(',', $emails), 
    ]; 
}  

$dep_id = '7'; 
echo $result[$dep_id]['to']; 

// version 4 
foreach ($result as $item) { 
    // more code here 

    $recipients = $item['to'].", ".$bcc; 
    $mail = $smtp->send($recipients, $headers, $body); 

    // more code here 
} 
+0

実際に私は部門に基づいてその電子メールアドレスを分割しています。あなたのコードを使用すると、すべての電子メールが表示されます。私が必要とするのは、部署に基づいて実行されるコードです。 –

+0

更新を参照してください。 –

+0

更新をお寄せいただきありがとうございます。私はprint_rの結果でDP0023に電子メールアドレスがあることを確認できます:[email protected]、[email protected]、DP0026には電子メールアドレスがあります:david.alwis @ siix.com.sg.私はそこに電子メール機能を設定する必要があるので、電子メール機能はその2つの部門に2回送信されます。 –

1

使用implode()を使用して

電子メールは既にあります。

ちょうどそれらをフェッチし、implode()をスティングにする必要があります。

$to = implode($agg); 
0

を使用し、あなたのループ内to文字列を格納する変数とechoそれ:

foreach ($agg as $dep => $emails) 
{ 
    $to = implode(',', $emails); 
    $result[] = [ 
     'DEPARTMENTID_FK' => $dep, 
     'to' => $to, 
    ]; 
    echo $to; // print it 
} 

更新

$toList = []; 
foreach ($agg as $dep => $emails) { 
    $to = implode(',', $emails); 
    $result[] = [ 
     'DEPARTMENTID_FK' => $dep, 
     'to' => $to, 
    ]; 

    $toList[] = $to; 
} 

$toString = implode(',', $toList); 
+0

こんにちはジャレッド、更新された私の質問のポストを参照してください。 –

+0

'$ toString'を印刷しようとしました –

+0

DP0023 =" [email protected]、[email protected] "とDP0026 =" [email protected] "を見ることができますその2つの部門に基づいて電子メールを送信したいだけです。今すぐコードを使用している場合は、すべての電子メールリストに1回だけ送信されます。 –

0

私は、私はあなたがしようとしているものを今理解だと思います行う。
これを試してください。
各部門をループし、すべての電子メールを収集します。

foreach ($agg as $dep) 
{ 
    $temparr[] = dep['to']; 
} 
$youremails = implode(",", $temparr); 

echo $youremails; // comma separated list. 
関連する問題