大佬教程收集整理的这篇文章主要介绍了php – 如何通过文章递归地从表中获取所有类似物?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
+----+-------+-------+ | 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_@R_772_10495@ng($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; } }
SELEct sku_1 sku from analogs where sku_2 = $yourid union SELEct sku_2 sku from analogs where sku_1 = $yourid
然后你将得到结果只有类似物的ID.
以上是大佬教程为你收集整理的php – 如何通过文章递归地从表中获取所有类似物?全部内容,希望文章能够帮你解决php – 如何通过文章递归地从表中获取所有类似物?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。