0

関連する質問:

25 の検証があり、各検証はブール値を返します (true は合格、false は失敗)。

各検証を他のすべての検証と組み合わせて、検証テストの組み合わせのマトリックスを形成できます。

サブセット検証の特定の組み合わせにも、合格/不合格のルールがあります。

以下に短い例を示します。

    V1 | V2 | V3 | V4 | V5
M1:  T |  T |  T |  T |  T   <-- For this Matrix row it would PASS
M2:  F |  T |  T |  F |  T   <-- For this Matrix row it would FAIL  
M3:  F |  F |  T |  T |  T   <-- For this Matrix row it would PASS
M4:  T |  F |  F |  F |  F   <-- For this Matrix row it would PASS
M5:  T |  T |  F |  F |  F   <-- For this Matrix row it would FAIL

垂直方向の値に対する水平方向の検証テストのみを気にします

私はすべてのテストを知っており、各テストの結果をデータベースに保存しています。すべての検証テストのサブセットのすべての組み合わせマトリックスを知っています。

私の質問は:

マトリックスを実行する最良の方法は何ですか?

マトリックス検証のために、合格または不合格の各テストの順列を保存する必要がありますか? 次に、マトリックスの組み合わせをどこに保存しますか?

これを行う唯一の方法は、25 のテスト (625 エントリ) のすべての検証の組み合わせを保存し、それらの検証に期待するマトリックスの結果を同じレコードに追加することだと考えています。

このようなもの

    V1 | V2 | V3 | V4 | V5 | MR ( Matrix Results )
M1:  T |  T |  T |  T |  T | P   <-- For this Matrix row it would PASS
M2:  F |  T |  T |  F |  T | F   <-- For this Matrix row it would FAIL  
M3:  F |  F |  T |  T |  T | P   <-- For this Matrix row it would PASS
M4:  T |  F |  F |  F |  F | P   <-- For this Matrix row it would PASS
M5:  T |  T |  F |  F |  F | F   <-- For this Matrix row it would FAIL

私が見ていないより最適な解決策があるかもしれないと感じています。何か考えはありますか?

4

1 に答える 1

1

これが私がそれをする方法です。まず、マトリックスマップを配列で定義します。

$map = array( 'TTTTT' => TRUE, 'FTTFT' => FALSE, 'FFTTT' => TRUE );

明らかに、その配列にはさらに多くの要素が含まれますが、要点はわかります。テーブル/列の名前はわかりませんが、次のCONCATv1-v5で文字列としてプルします。次に、マップ配列でそのキーを見つけます。

$sql = "SELECT CONCAT(v1,v2,v3,v4,v5) AS matrix FROM `validation` WHERE `user`= '$user'";
$result = $mysqli->query( $sql );
$user_matrix = array();
while( $row = $result->fetch_assoc() ) $user_matrix[] = $map[ $row['matrix'] ];

これで、$user_matrix配列に結果が表示されます。

于 2012-10-30T13:46:42.827 に答える