gpt4 book ai didi

php - 如何通过文章递归地从表中获取所有类似物?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:44 25 4
gpt4 key购买 nike

我创建了一个简单的类似物表:

+----+-------+-------+
| id | sku_1 | sku_2 |
+----+-------+-------+
| 1 | a1 | abcd |
| 2 | a2 | a3 |
| 3 | a3 | a1 |
+----+-------+-------+
3 rows in set (0.00 sec)

什么意思?这意味着带有文章 abcd 的产品与文章 a1 有相似之处,否则例如带有文章 a3 的产品与文章 相似a1.

如何通过单篇文章递归获取此表中的所有产品?

我的解决方案是错误的:

// Small Class to get analogs of products
class Analogs {

public function get_analogs($sku)
{
if (!$sku) return false;

$link = mysql_connect('localhost','','');
mysql_select_db('test');

$sku = mysql_real_escape_string($sku,$link);

$query = mysql_query("SELECT * FROM analogs WHERE sku_1='".$sku."' OR sku_2='".$sku."'");

while($analogs[]=mysql_fetch_assoc($query))
continue;

return $analogs;
}


public function MixedAnalogs($sku)
{
if (!$sku) return false;

$link = mysql_connect('localhost','','');
mysql_select_db('test');

$sku = mysql_real_escape_string($sku,$link);

$query = mysql_query("select sku_1 sku from analogs where sku_2 = '$sku' UNION
select sku_2 sku from analogs where sku_1 = '$sku'");

while($analogs[]=mysql_fetch_assoc($query))
continue;

return $analogs;
}


}

$mixed_analogs = AnalogsMix('abcd',$ids=array());

echo "<pre>";
print_r($mixed_analogs);
echo "</pre>";

// Recursive function to get analogs of analog
function AnalogsMix($sku,$ids=array())
{
$class_analogs = new Analogs();
$analogs = $class_analogs->get_analogs($sku);

foreach ($analogs as $analog)
{
$cross = null;

if ($analog['sku_1']==$sku)
{
$cross->sku = $analog['sku_2'];
}
else
{
$cross->sku = $analog['sku_1'];
}

$cross->id = $analog['id'];

if (!in_array($analog['id'],$ids))
{
$ids[] = $analog['id'];
$mixed[] = AnalogsMix($cross->sku,$ids);
}
}

if (isset($mixed))
{
return $mixed;
}
else
{
return false;
}
}

最佳答案

SQL 联合

select sku_1 sku from analogs where sku_2 = $yourid
union
select sku_2 sku from analogs where sku_1 = $yourid

然后您将在结果中仅获得类似物的 ID。

关于php - 如何通过文章递归地从表中获取所有类似物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15617551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com