Php 相关积算法

Php 相关积算法,php,mysql,Php,Mysql,在eshop中插入产品时,我们通常需要将某些产品(也称为相关产品)链接到其他产品,链接必须双向进行,这意味着如果我将product1链接到product2,则product2也必须链接到product1 使用额外的表“关系”(prodid,related_prodid)或在products表中的每个产品行中以分隔字符串保留相关产品的列表,哪一种是最佳做法 在任何一种情况下,我们都需要一个递归方法来循环给定的产品数组,并使用关系插入/更新表,有人能帮我解决这个算法吗?我将进行PHP编码,但我想不出

在eshop中插入产品时,我们通常需要将某些产品(也称为相关产品)链接到其他产品,链接必须双向进行,这意味着如果我将product1链接到product2,则product2也必须链接到product1

使用额外的表“关系”(prodid,related_prodid)或在products表中的每个产品行中以分隔字符串保留相关产品的列表,哪一种是最佳做法


在任何一种情况下,我们都需要一个递归方法来循环给定的产品数组,并使用关系插入/更新表,有人能帮我解决这个算法吗?我将进行PHP编码,但我想不出一个好方法。

一定要使用额外的表(字符串解决方案真的是个坏主意),最好将其组织起来,以便将主键最低的产品放在关系的第一位(允许进行一些优化);无需复制关系(即同时拥有和)。
至于递归方法,不清楚关系的值从何处获得。

最好使用与(id,product1,product2)相关的中间表

然后,您将使用以下代码:

function findRelatedProducts($product) {
  $relatedProducts = array();
  $data = mysql_query("SELECT * FROM related_to WHERE product1='$product' OR product2='$product'");
  while ($relation = mysql_fetch_array($data)) {
    $relatedProducts[] = $relation['product1'] == $product ? $relation['product2'] : $relation['product1'];
  }
  return $relatedProducts;
}

当然,你需要
将这个表与你的产品表连接起来,但是由于我没有太多关于你的mysql结构的信息,如果你不知道如何连接,我会让你检查

我认为这个问题在你发布时太广泛了。使用两列而不是一列确实有帮助,我用了你的例子,做了我需要的,谢谢!考虑添加“权重”栏。因为有些产品可能比其他产品更相关。