まず、タイトルが一般的でフィッティングではないことがわかります。私は自分の問題を説明できるタイトルを考えることができませんでした。PHPでforeachループを最適化する方法
私はMySQLでのテーブルの受信者を持っているが、このような構造:
id | email | status
1 [email protected] S
2 [email protected] S
3 [email protected] R
4 [email protected] B
は私が状況分野に応じて、次のXMLにデータを変換する必要があります。たとえば:
<Recipients>
<RecipientsSent>
<!-- Have the 'S' status -->
<recipient>[email protected]</recipient>
<recipient>[email protected]</recipient>
</RecipientsSent>
<RecipientsRegexError>
<recipient>[email protected]</recipient>
</RecipientsRegexError>
<RecipientsBlocked>
<recipient>[email protected]</recipient>
</RecipientsBlocked>
</Recipients>
が、私はこの($受信者はdbテーブルの連想配列を含んでいる)を実装するために、このPHPコードを持っている:だから
<Recipients>
<RecipientsSent>
<?php
foreach ($recipients as $recipient):
if ($recipient['status'] == 'S'):
echo "<recipient>" . $recipient['email'] . "</recipient>";
endif;
endforeach;
?>
</RecipientsSent>
<RecipientsRegexError>
<?php
foreach ($recipients as $recipient):
if ($recipient['status'] == 'R'):
echo "<recipient>" . $recipient['email'] . "</recipient>";
endif;
endforeach;
?>
</RecipientsRegexError>
<?php /** same loop for the B status */ ?>
</Recipients>
を、これがあれば、私は1000のエントリを有することを意味しますテーブルと4つの異なるステータス 'をチェックすると、それぞれが1000回実行する4つのループが存在することを意味します。
これをより効率的にどのように行うことができますか?私はデータベースから4つの異なるセットをフェッチすることを考えました。つまり、4つの異なるクエリが効率的でしょうか?私はそれが1つのループで行うことができると思っていますが、私は解決策を考え出すことができません。
これはどのような方法でも1つのループで行うことができますか?
@pnaあなたの編集のおかげで:)私はこれを書いたときに私はほとんど眠っていた。 –