1

ID属性を持つオブジェクトの配列があり、それらをテーブルにリンクする必要があります。

リンクされたオブジェクトIDを2列のMySQLテーブルに挿入したいと思います。

問題のテーブルには、 ABの2つの列があります。オブジェクトのコレクションをオーバーラップせずにリンクしたいと思います。

これは、アプリオリアルゴリズムの候補生成プロセスに似ているため、疑似アプリオリと呼んでいます。

以下の例では、ID値が1〜5の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またはarray)、printFreqItemsets (void)、getFreqItemsets(void)、printAssociationRules(void)、getAssociationRules(void)、saveFreqItemsets(string)、saveAssociationRules(string)

于 2014-11-22T08:56:41.357 に答える