php - 检测多维数组中的新排列

标签 php arrays recursion multidimensional-array

在我们的数据库中,我们有一个表,它是三个表的每个排列的结果。

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

例如

$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
)

foreach $foo as $x
  foreach $bar as $y
    foreach $baz as $z
      $combo = array($x, $y, $z)
      if $combo is not in $permutations
         //generate sql to update db

我怎样才能实现这个目标?

最佳答案

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

如果您有 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;

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

关于php - 检测多维数组中的新排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28686764/

相关文章:

java - 通过递归分而治之获得数组中的最大数字

php - 去除 php 字符串中所有不必要的空格

ios - 在 Swift 中保存为用户默认值

javascript - 根据语言更改警报消息?

javascript - 输出带引号的数组时出现问题

python - 将多个参数传递给函数的最有效方法?

javascript - 找不到模块 : Error: Recursion in resolving in angular app

python - 如何使用 numpy where 函数编写递归搜索?

php - Mailgun Cc header 问题

php - 动态预处理语句不好吗? (使用 php + mysqli)