代码之家  ›  专栏  ›  技术社区  ›  Donny Kurnia

如果针是阵列,如何在_阵列中使用?

  •  43
  • Donny Kurnia  · 技术社区  · 16 年前

    $arr1 = array(1,2,3);
    $arr2 = array(1,2,3,4,5,6,7);
    

    我想做的是检查一下 所有的价值观 $arr1 $arr2 . 上面的例子应该是一个例子 TRUE 而:

    $arr3 = array(1,2,4,5,6,7);
    

    $arr1 具有 $arr3 将返回一个 FALSE .

    in_array 因为我只需要将单个值签入数组。但在这种情况下,, in_数组

    更新以澄清。

    第一个数组将是一个包含唯一值的集合。第二个数组可以包含重复的值。它们都保证在处理之前有一个数组。

    4 回复  |  直到 10 年前
        1
  •  88
  •   cletus    16 年前

    array_diff() :

    $arr1 = array(1,2,3);
    $arr2 = array(1,2,3,4,5,6,7);
    $arr3 = array_diff($arr1, $arr2);
    if (count($arr3) == 0) {
      // all of $arr1 is in $arr2
    }
    
        2
  •  36
  •   Justin Johnson    16 年前

    你可以用 array_intersect array_diff :

    $arr1 = array(1,2,3);
    $arr2 = array(1,2,3,4,5,6,7);
    
    if ( $arr1 == array_intersect($arr1, $arr2) ) {
        // All elements of arr1 are in arr2
    }
    

    但是,如果您不需要使用交叉点的结果(这似乎是您的情况),则使用array_diff会更节省空间和时间:

    $arr1 = array(1,2,3);
    $arr2 = array(1,2,3,4,5,6,7);
    $diff = array_diff($arr1, $arr2);
    
    if ( empty($diff) ) {
        // All elements of arr1 are in arr2
    }
    
        3
  •  5
  •   Sam Becker    16 年前

    你可以尝试使用 array_diff() 函数查找两个数组之间的差异,这可能会对您有所帮助。我想澄清一下,你的意思是,第一个数组中的所有值都必须在第二个数组中,但不是相反。

        4
  •  0
  •   Ivan Karpan    14 年前

    array_diff() 不适合我。

    相反,我根据按字母顺序排序的ID生成密钥,并将它们与in_数组一起使用:

    <?php
    $pairs = array();
    // ...
    $pair = array($currentId, $id);
    sort($pair);
    $pair = implode('-', $pair);
    if (in_array($pair, $pairs)) {
        continue;
    }
    $pairs[$pair] = $pair;
    

    推荐文章