【问题标题】:if elements of array 1 exists in array 2如果数组 1 的元素存在于数组 2 中
【发布时间】:2011-04-11 12:49:21
【问题描述】:

这有点像 in_array 但是虽然 in_array 检查数组中是否存在一个元素并相应地返回 true 和 false,但我想知道 array1 的所有元素是否都是 array2 的一部分。

例如:

$array1 = array(3, 30);
$array2 = array(5, 30);
$array3 = array(5, 50);

$array = array(50,7,8,456,1,5,567);

function new_in_array($array1,$array) // false
function new_in_array($array2,$array) // false
function new_in_array($array3,$array) // true

有什么想法吗?

【问题讨论】:

  • 谢谢大家。接受@alexn 的回答。干杯。

标签: php arrays


【解决方案1】:

array_intersect 可以:

<?php
$first = array('foo', 'bar');
$second = array('foo', 'bar','baz');

var_dump(array_intersect($first, $second) === $first); // True

$first = array('foo', 'bar', 'hello');
$second = array('foo', 'bar','baz');

var_dump(array_intersect($first, $second) === $first); // False

【讨论】:

    【解决方案2】:

    使用array_intersect 将这两者相交并检查返回数组中的元素数量:

    $intersect = array_intersect($array1, $array2);
    if (count($intersect) == count($array1)) {
       // array1 is fully contained in array2
    }
    

    【讨论】:

      【解决方案3】:

      或者使用array_diff():

      function array_contains($haystack, $needles) {
        return !count(array_diff($needles, $haystack));
      }
      
      array_contains($array2, $array1); // all elements of array1 is part of array2?
      

      【讨论】:

        【解决方案4】:

        您也可以使用 for 循环。

        for ($i = 0; $i < sizeof($array1); $i++) {
          if (!in_array($array1[$i], $array2)) {
            return False;
          }
        }
        return True;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-22
          • 1970-01-01
          • 2019-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多