1

我有一个带有 ID 属性的对象数组,我需要将它们链接到一个表中。

我想将链接在一起的对象 ID 插入到 2 列 MySQL 表中。

有问题的表有 2 列:AB。我想将对象集合链接在一起而没有任何重叠。

我将其称为伪先验,因为它类似于先验算法的候选生成过程。

对于下面的示例,我有五个 ID 值为 1-5 的对象。例如:$obj1->id == 1,等等。

示例表:

Input IDs:
{1, 2, 3, 4, 5}

Output DB Table:
-----------
| A  |  B |
-----------
| 1  |  2 |
| 1  |  3 |
| 1  |  4 |
| 1  |  5 |
| 2  |  3 |
| 2  |  4 |
| 2  |  5 |
| 3  |  4 |
| 3  |  5 |
| 4  |  5 |
-----------
4

3 回答 3

2

真的不知道你想做什么。但是如果结果必须是表格示例,那么您可以使用以下循环来完成:

$arr = array(1, 2, 3, 4, 5);

for($i = 0; $i < count($arr); $i++) {
    for($j = $i+1; $j < count($arr); $j++) {
        // add db logic here
        $q = 'insert into table (' . $arr[$i] . ', ' . $arr[$j] . ')';
    }
}

这是输出的 jsFiddle 示例:JsFiddle

于 2013-03-08T13:28:48.563 回答
2

例如梨包Math_Combinatorics可以做到这一点。

<?php
require 'Math/Combinatorics.php';
$c = new Math_Combinatorics;
foreach( $c->combinations(array(1,2,3,4,5), 2) as $k ) {
    echo join(', ', $k), "\n";  
}

印刷

1, 2
1, 3
1, 4
1, 5
2, 3
2, 4
2, 5
3, 4
3, 5
4, 5
于 2013-03-08T13:29:41.277 回答
-2

请访问此地址:PHP 中的 Apriori 算法

方法: setMaxScan(int), setMinSup(int), setMinConf(int), setDelimiter(string), getMinSup(void), getMinConf(void), getMaxScan(void), getDelimiter(void), process(string or array), printFreqItemsets (void)、getFreqItemsets(void)、printAssociationRules(void)、getAssociationRules(void)、saveFreqItemsets(string)、saveAssociationRules(string)

于 2014-11-22T08:56:41.357 回答