【问题标题】:Check differences in multidimensional array检查多维数组中的差异
【发布时间】:2017-11-24 11:40:38
【问题描述】:

我有一组每次都可以不同的数组。下面的一个包含和数组,其中包含更多大小不同的数组。 我需要遍历每个数组并检查它们之间是否有任何区别。 因此,对于给定的数组,所有可能的组合如下:

array_diff($arrays[0][0],$arrays[1][0]);
array_diff($arrays[0][1],$arrays[1][1]);
array_diff($arrays[0][1],$arrays[1][2]);


$arrays = [
0 => [
  0 =>  [
     9 => "39"
     10 => "40"
     14 => "62"
  ]
  1 =>  [
     9 => "38"
     10 => "40"
     14 => "63"
  ]
]
1 => [
   0 => [
     9 => "39"
     10 => "40"
     14 => "62"
  ]
  1 =>  [
     9 => "39"
     10 => "40"
     14 => "64"
  ]
  2 =>  [
     9 => "39"
     10 => "41"
     14 => "62"
  ]
]
]

这就是我正在尝试的:

foreach($combinations as $set_id => $comb)
    {
        foreach($comb as $key => $selections)
        {

            if(isset($combinations[++$set_id][$key])){
                if(!empty(array_diff($selections, $combinations[++$set_id][$key]))){
                    return false;
                }
            }

        }

    }

我想知道同一个数组是否包含在另一个数组中。你能从我的例子中看到 array[0] 和 array[1] 包含不同的数组组合吗?因此,如果其中一个组合完全相同,我需要显示错误。

在这种情况下 array_diff($arrays[0][0],$arrays[1][0]);应该返回一个空数组,这意味着没有区别,我应该显示和错误。

【问题讨论】:

  • 始终标记您遇到问题的特定编程语言。在这种情况下,PHP。
  • 不清楚你在问什么;我认为您想在两种数据结构之间有所不同。你能清楚地提供开始和结束的数据结构吗?
  • 我想知道同一个数组是否包含在另一个数组中。你能从我的例子中看到 array[0] 和 array[1] 包含不同的数组组合吗?因此,如果其中一个组合完全相同,我需要显示一个错误。
  • 那么底线,这个数组不应该有错误信息吗?
  • 是的,你是对的@Andreas

标签: php arrays array-difference


【解决方案1】:

我找到了解决方案。

这里是:

private function validatePossibleConbinations($combinations)
  {
      $error = true;

      foreach($combinations as $set_id => $comb)
      {
          $nextArray = ++$set_id;

          foreach($comb as $key => $selections)
          {
              if(isset($combinations[$nextArray])){

                  foreach($combinations[$nextArray] as $nextComb){

                      if($comb[$key] === $nextComb){

                        $error = false;

                      }

                  }

              }

          }

      }
      return $error;
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多