-1

私は配列を持っています:

$selected_emails = 
array(6) {
  [16781]=> "xxx@gmail.com",
  [16782]=> "yyy@gmail.com",
  [16785]=> "xxx@gmail.com,yyy@gmail.com",
  [16789]=> "yyy@gmail.com",
  [16751]=> "xxx@gmail.com,yyy@gmail.com,zzz@gmail.com",
  [16729]=> "zzz@gmail.com,bbb@gmail.com",
}

上記keysの配列の はニュース ID で、valuesはそのニュース (ニュース ID) を電子メールで取得する電子メールです。

上記の配列の電子メールに電子メールを送信したいので、上記の配列を、取得する必要があるニュース ID の値を持つ電子メール アドレス (一意) で並べ替える必要があるため、上記の配列は次のようになります。

$final_array = 
array(4) {
    [xxx@gmail.com] => "16781,16785,16751",
    [yyy@gmail.com] => "16782,16789,16751",
    [zzz@gmail.com] => "16751,16729,",
    [bbb@gmail.com] => "16729", 
}

したがって、新しい配列では、メールごとにどのニュースを送信する必要があるかがわかります。

残念ながら、これを行う方法がわかりません。多くforeachの s を実行しましたが、どれも正常に機能していません。

これはどのように達成できますか?ありがとう

4

2 に答える 2

3
$final_array = array();

foreach ($selected_emails as $newsletter => $emails) {
    foreach (explode(',', $emails) as $email) {
        $final_array[$email][] = $newsletter;
    }
}

var_dump($final_array);

これにより、ニュースレター IDがコンマ区切りのリストではなく、ID の配列として保存されることに注意してください。これは、操作がはるかに簡単です。

デモ: http://3v4l.org/605SI

于 2013-10-23T09:46:40.407 に答える
0

PHP の array_flip() 関数を見てください。キーと値を交換します: http://www.php.net/manual/en/function.array-flip.php

次に、ksort() を使用して配列を it キーでソートします。

$selected_emails = array_flip($selected_emails);
ksort($selected_emails);
print_r($selected_emails);
于 2013-10-23T09:43:53.330 に答える