相关问题:
> Matrix Combination Logic
> Would cartesian product be the best approach for this
我有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
我只是觉得可能有一个我没有看到的最佳解决方案,有什么想法吗?
解决方法:
这是我会做的方式.首先在数组中定义矩阵图:
$map = array( 'TTTTT' => TRUE, 'FTTFT' => FALSE, 'FFTTT' => TRUE );
显然,该数组中将有更多元素,但是您明白了.我不知道您的表/列名称,但是下一个CONCAT v1-v5并以字符串形式提取.然后,只需在map数组中找到该键:
$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数组中