我在数组中有不确定数量的项目:
$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...
}