如何比较两个数组的相似之处?

时间:2013-09-02 20:20:45

标签: php mysql arrays loops comparison

我正在尝试比较两个数组。两个数组都包含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[]

对此的任何帮助将不胜感激。另外,如果您知道更好的方法,请告诉我们!

2 个答案:

答案 0 :(得分:1)

您可以使用array_intersect

比较2个数组
$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。