我在数组中有无限数量的项目:
$query = mysql_query("SELECT * FROM orders WHERE orderID = '$orderID'");
while($row = mysql_fetch_array($query)){
$items[] = $row[itemnumber];
$quantity[] = $row[quantity];
$vendoremail[] = $row[vendoremail];
}
数组中的值可能是这样的:
$items = ("A","B", "C");
$quantity = ("2", "1", "3");
$vendoremail = ("name1@email.com", "name2@email.com", "name1@email.com");
我想对来自相同电子邮件地址的数据进行分组,并向每个地址发送一封电子邮件。
因此一封电子邮件被发送到 name1@email.com,邮件正文中包含项目“A”和“C”以及数量“2”和“3”。
另一封电子邮件被发送到 name2@email.com,邮件正文中包含项目“B”和数量“1”。
有人知道完成此任务的最佳方法吗?
最佳答案
您可以通过 GROUP_CONCAT()
将值分组为逗号分隔的字符串,并可选择在 PHP 中拆分它们:
SELECT
GROUP_CONCAT(itemnumber) AS items,
GROUP_CONCAT(quantity) AS quantities,
vendoremail
FROM orders
WHERE orderid = '$orderID'
GROUP BY vendoremail
这将产生如下结果:
name1@email.com A,C 2,3
name2@email.com B 1
在 PHP 中,如果需要,您可以explode()
将列表返回到数组中以显示在电子邮件正文中。
$results = array();
while($row = mysql_fetch_array($query)){
$results[] = $row;
}
foreach ($results as $result) {
$email = $result['vendoremail'];
$items = explode(",", $result['items']); // now it's an array...
$quantities = explode(",", $result['quantities']); // now it's an array...
}
关于php array - 为每个唯一的电子邮件地址发送一封电子邮件,将数据分组在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082112/