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

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 如何通过文章递归地从表中获取所有类似物?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建了一个简单的类比表:
+----+-------+-------+
| id | sku_1 | sku_2 |
+----+-------+-------+
|  1 | a1    | abcd  |
|  2 | a2    | a3    |
|  3 | a3    | a1    |
+----+-------+-------+
3 rows in set (0.00 sec)
@H_301_3@什么意思?这意味着具有物品abcd的产品具有与物品a1类似的物品,否则例如具有物品a3的产品具有与物品a1类似的物品.

@H_301_3@如何以单篇文章递归获取此表中的所有产品?

@H_301_3@我的解决方案是错的:

// 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',$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 UNION
select sku_1 sku from analogs where sku_2 = $yourid
union
select sku_2 sku from analogs where sku_1 = $yourid
@H_301_3@然后你将得到结果只有类似物的ID.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 如何通过文章递归地从表中获取所有类似物?全部内容,希望文章能够帮你解决php – 如何通过文章递归地从表中获取所有类似物?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。