我正在尝试比较两个数组。两个数组都包含drop dropper的ID。我需要比较这两个数组,每次找到匹配项时,都需要执行sql查询来提取相应id的电子邮件。这是我目前的代码:
$orderid = mysql_query("SELECT MAX(orders_id) FROM orders") or die(mysql_error());
$orderid = mysql_fetch_row($orderid);
$purchasedProductId = mysql_query('SELECT products_id FROM orders_products WHERE orders_id = "' . $orderid[0] . '"');
$DSID = mysql_query("SELECT id FROM drop_shippers");
$DSIDarray = Array();
while ($row = mysql_fetch_array($purchasedProductId, MYSQL_ASSOC)) {
$purchasedProductIdarray[] = $row['products_id'];
}
while ($row = mysql_fetch_array($DSID, MYSQL_ASSOC)) {
$DSIDarray[] = $row['id'];
}
//compare $purchasedProductIdarray[] to $DSIDarray[], then save the comparason in the same order as $purchasedProductIdarray[]
对此的任何帮助将不胜感激。另外,如果您知道更好的方法,请告诉我们!
答案 0 :(得分:1)
您可以使用array_intersect
$new_array = array_intersect($purchasedProductIdarray, $DSIDarray);
这将按照与$new_array
中相同的顺序保存$purchasedProductIdarray
中的相等ID。
答案 1 :(得分:0)
当你说“保存比较”时,你的意思是得到两者中存在的元素列表,对吧?你会这样做
$intersect = array_intersect($purchasedProductIdarray, $DSIDarray);
然而,在这种情况下,你根本不应该这样做;你可以从数据库中获取它。听起来orders_products.products_id
匹配drop_shippers.id
。如果是这种情况,并且您的电子邮件列位于drop_shippers
表中,那么查询将如下所示:
SELECT products_id, email FROM orders_products
INNER JOIN drop_shippers ON drop_shippers.id=orders_products.products_id
WHERE orders_products.orders_id='{$orderid[0]}'
此外,不推荐使用mysql扩展;你应该使用mysqli或PDO。