此表位于数据库
中 TID Products
1 1,2,5
2 2,4
3 2,3
4 1,2,4
5 1,3
6 2,3
7 1,3
8 1,2,3,5
9 1,2,3
此表由项目集的组合创建,现在只有2个项目集,但最终是3,4,5等等。如您所见,Sup计数计算该行中Itemset的Products表中的重合。
ItemSet Sup. count
1,2 4
1,3 2
1,4 0
1,5 0
2,3 4
2,4 2
2,5 1
3,4 0
3,5 1
4,5 0
for($i = 0; $i < $count_itemsets; $i++){
for($j = 0; $j < $count_productrow; $j++){
$string = $productrow[$j];
$myArray = explode(',', $string);
这会将字符串转换为第一个产品{1,2,5}
的数组示例 $arr_expl_itemset = explode(',',$itemset[$i]);
这会使项目集爆炸,使其成为第一个ItemSet行{1,2}
的数组示例 $count_explode = count($arr_expl_item);
这会计算新数组$arr_expl_itemset
for ($x = 0; $x < $count_explode - 1; $x++){
array_splice($arr_expl_item,$count_explode - 1,0,"&");
}
echo $arr_expl_item;
这个for循环是我想要添加新元素而不删除旧元素的地方。我要添加的新元素是用于制作如下所示数组的&符号:
1&amp; 2&amp; 5这就是为什么我将数组计数到-1,以便最后一个元素不是&符号。所有这一切然后转换为一个字符串,$arr_expl_item_STRING = 1 & 2 & 5;
这就是我被卡住的地方。我真的不知道这是否适用于preg_match,但我一直在阅读并做一个OR语句,代码就像这样:
/*if(preg_match("/(bad|naughty|other)/i", $data)){
//one of these string found
}*/
所以我在想,如果我想与AND进行比较,我会按照之前解释过的方式进行比较。
if (preg_match('/($arr_expl_item_STRING)/i', $string, $m)) {
$result_support[$i] = $result_support[$i] + 1;
我想计算数组中的数字,以便我可以在products列中找到{1,3},其中字符串为{1,3},{1,2,3},{1,2, 3,5}等等。如果我做一个边界来寻找一个特定的子串,那么匹配将不起作用,如果我寻找巧合,当我得到12位或更多的两位数时,它就不会起作用,因为1和2会再次找到。
}
}
}