首先,我知道标题是通用的并且不适合。我无法想象一个能够描述我的问题的标题。如何优化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>
我有这样的PHP代码来实现这一点($收件人包含db表的关联数组):
<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种不同的状态',可以检查,这意味着会有4个循环,每个执行1000次。
这怎么能以更有效的方式完成?我想过从数据库中提取四组不同的数据库,这意味着4个不同的查询,会更有效率吗?我认为可以用一个循环完成,但是我不能提出解决方案。
这只能用一个循环完成吗?
@pna感谢您的编辑:)当我写这篇文章时,我几乎睡着了。 – 2012-03-25 12:13:12