相关问题:
- 矩阵组合逻辑 https://stackoverflow.com/questions/13531987/matrix-combination-logic
- 笛卡尔积是最好的方法吗 https://stackoverflow.com/questions/13282688/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 并作为字符串拉取。然后,只需在地图数组中找到该键:
$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 数组中得到了结果
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)