• 締切済み

Net_POP3 メール一覧のソート

Net_POP3を使用してメールの閲覧を作成しています。 現在は日付の古いものから新しいものへと表示されています。 これを日付の新しいものから古いものへと表示をさせたいのですが、sortがうまくできず困っています。 ご存知の方がいらっしゃいましたらご教示お願いします。 ソースは下記になります。 $count = $pop3->numMsg(); if ($count) { $count = $pop3->getListing(); $start = 1; $end = 21; if ($count !== false) { foreach ($count as $key => $value) { if($start < $end) { $overview = $pop3->getParsedHeaders($start); $body = $pop3->getBody($start); $from = mb_decode_mimeheader($overview['From']); $from = mb_convert_encoding($from, "UTF-8", "JIS"); $subject = mb_decode_mimeheader($overview['Subject']); $subject = mb_convert_encoding($subject, "UTF-8", "ISO-2022-JP"); $subject = mb_strimwidth($subject, 0, 42, "...",'UTF8'); $date = mb_decode_mimeheader($overview['Date']); $body = nl2br($body); $maillist .= '<tr>'."\n"; $maillist .= '<td>'.$subject.'</td>'."\n"; $maillist .= '<td>' .$from. '</td>'."\n"; $maillist .= '<td>' .date('Y/m/d H:i:s',strtotime($date)). '</td>'."\n"; $maillist .= '</tr>'."\n"; $start++; } } } } 宜しくお願いします。

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

何のためにforeachを使っているのか読み取れません($keyも$valueも使っていませんよね)。 $count = $pop3->numMsg(); でメッセージ件数を取得したら、そのまま $dispcnt = 0; // 表示カウンタ $dispmax = 20; // 最大表示数 $msgid = $count; // メッセージID(最新からカウントダウン) while($msgid >= 1) { if (++$dispcnt >= $dispmax) { break; } $overview = $pop3->getParsedHeaders($msgid); $body = $pop3->getBody($msgid); // メール内容を表示 $msgid--; } などとすればいいのでは?

関連するQ&A