0

我正在尝试比较两个数组。这两个数组都包含一个托运人的 ID。我需要比较这两个数组,每次找到一个匹配的时候,都需要执行一个sql查询来拉出对应id的email。这是我当前的代码:

$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[]

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

4

2 回答 2

1

您可以使用比较 2 个数组array_intersect

$new_array = array_intersect($purchasedProductIdarray, $DSIDarray);

这将以与$new_arrayin 相同的顺序保存相同的 id $purchasedProductIdarray

于 2013-09-02T20:47:52.263 回答
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。

于 2013-09-02T20:48:49.553 回答