【问题标题】:How to check if one array elements entirely exists in another array in php [duplicate]如何检查一个数组元素是否完全存在于php中的另一个数组中[重复]
【发布时间】:2012-05-18 10:27:45
【问题描述】:

我有两个数组,例如:

array1={1,2,3,4,5,6,7,8,9};
array2={4,6,9}

是否有任何函数可以让我确定array2 完全存在于array1 中?

我知道我可以在循环中使用in_array() 函数,但如果我将拥有包含数百个元素的大型数组,所以我正在寻找一个函数。

【问题讨论】:

    标签: php arrays


    【解决方案1】:

    试试:

    $fullyExists = (count($array2) == count(array_intersect($array2, $array1));
    

    array_intersect.php 函数将仅返回存在于所有其他参数中的第二个数组的元素(在这种情况下仅返回第一个数组)。因此,如果交集的长度等于第二个数组的长度,则第二个数组完全包含在第一个数组中。

    【讨论】:

      【解决方案2】:

      您可以为此使用array_intersect,但您必须小心一点。

      如果要匹配的数组没有重复,则可以使用

      // The order of the arrays matters!
      $isSubset = count(array_intersect($array2, $array1)) == count($array2);
      

      但是,如果例如,这将不起作用。 $array2 = array(4, 4)。如果重复是一个问题,您还需要使用array_unique

      $unique = array_unique($array2);
      // The order of the arrays matters!
      $isSubset = count(array_intersect($unique, $array1)) == count($unique);
      

      数组的顺序很重要的原因是作为array_intersect 的第一个参数给出的数组必须没有重复。如果切换参数,则此要求将从$array2 移动到$array1,这很重要,因为它可以改变函数的行为。

      【讨论】:

      • 这将强制 PHP 检查每个值以确定数组是否相同。
      【解决方案3】:

      快速简便的解决方案:

       array_diff(array(1,2,3,4,5,6,7,8,9),array(4,6,9));
      

      如果返回的是一个空数组,它在数组中,否则他会输出不是的项

      【讨论】:

      • 感谢您的回复,但这不是正确的解决方案
      【解决方案4】:

      我没有尝试使用复杂的数组,而是比较了我的工作

      var_dump(array(1,2,3,4,5,6,7,8,9) === array(4,6,9));
      var_dump(array(1,2,3,4,5,6,7,8,9) === array(1,2,3,4,5,6,7,8,9));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-06
        • 2016-04-22
        • 1970-01-01
        • 2010-11-18
        • 2016-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多