Php 多维数组中新排列的检测

Php 多维数组中新排列的检测,php,arrays,recursion,multidimensional-array,Php,Arrays,Recursion,Multidimensional Array,在我们的数据库中,我们有一个表,它是三个表中每个置换的结果 我正在尝试编写一个PHP脚本,它将所有这些表都视为数组,并检测是否缺少排列 e、 g 我怎样才能做到这一点呢?我不知道你到底想做什么,但我建议: $foo = array('one', 'two', NULL); $bar = array('three', 'four', NULL); $baz = array('five', 'six', NULL); $permutations = array( array('one', 't

在我们的数据库中,我们有一个表,它是三个表中每个置换的结果

我正在尝试编写一个PHP脚本,它将所有这些表都视为数组,并检测是否缺少排列

e、 g


我怎样才能做到这一点呢?

我不知道你到底想做什么,但我建议:

$foo = array('one', 'two', NULL);
$bar = array('three', 'four', NULL);
$baz = array('five', 'six', NULL);

$permutations = array(
  array('one', 'three', 'five'),
  array('two', 'three', 'five'),
  array(NULL, 'three', 'five'),
  //etc
);

$foobarbaz = array_merge($foo, $bar, $baz);
foreach($foobarbaz as $k){ 
  if(!in_array($k, $permutations) {
     $sql_trigger_start();
  }
}
一个例子谁得到这个问题。

您必须使用MySQL检索每个可能的排列,并在第四个表上使用左连接,并测试是否没有匹配项

如果有3个表t1、t2、t3包含一列“值”,表t4是“置换”,包含三列t1、t2和t3,则可以通过以下查询获得不存在的“置换”

SELECT t1.value v1, t2.value v2, t3.value v3
FROM t1, t2, t3
LEFT JOIN t4 ON t4.t1=v1 AND t4.t2=v2 AND t4.t3=v3
WHERE t4.t1 IS NULL;

您可以调整此查询以匹配您的数据库架构。

如果您有X个表,每个表都有Y个元素(??),那么如果这是一个“重复排列”,您将有X^Y排列。因此,快速冒烟测试将确保
$permutations
长度与X^Y相同(或集合的范围应该是什么)…您还可以在执行长度检查之前确保$permutations只有唯一的元素。这可能比必须检查每一个可能的排列更有效。数组合并将不起作用。反正也不是这样。$permutations数组当前包含$foo、$bar和$baz数组的所有可能组合。但是,有时$foo、$bar、$baz数组会添加新项,这意味着$permutations数组不再包含所有组合。我需要一种针对$permutations数组测试每个可能组合的方法,并检测它何时不存在,以便生成SQL语句。这有意义吗?是的,谢谢你可以解决你的问题。转到这个链接,你应该模拟一个完整的外部连接,在一个查询中得到答案。
SELECT t1.value v1, t2.value v2, t3.value v3
FROM t1, t2, t3
LEFT JOIN t4 ON t4.t1=v1 AND t4.t2=v2 AND t4.t3=v3
WHERE t4.t1 IS NULL;