【问题标题】:PHP return true if all values in 1 array are present in array 2如果 1 数组中的所有值都存在于数组 2 中,则 PHP 返回 true
【发布时间】:2014-04-15 02:46:00
【问题描述】:

我正在寻找类似 array_intersect 的函数,但不是返回 2 个数组中存在的值,而是仅当数组 1 中的所有值都包含在数组 2 中时才返回 TRUE。

例如:

$first_array = array(0=>1, 1=>4, 2=>8)
$second_array = array(0=>9, 1=>8, 2=>7, 3=>1, 4=>3, 5=>4)

如果比较两个数组,$first_array 中的所有值都存在于 $second_array 中,它们是 1、4 和 8,因此函数应该返回 true。有没有可以做到这一点的功能?

谢谢。

【问题讨论】:

标签: php arrays


【解决方案1】:
function compare($first_array, $second_array){
         if(empty(array_diff($first_array,$second_array))){
                return true;
         }else{
                return false;
         }
}

试试这个。任何人看到任何错误请编辑它。

【讨论】:

  • 谢谢,看起来不错。这也行吗? if(array_diff($first_array, $second_array)==0 { return TRUE};
  • @CainNuke 抱歉,这超出了我的知识范围。您需要自己尝试一下。
  • 它对我有用,似乎我们用两种方法得到了相同的结果。不过我更喜欢你的。谢谢。
【解决方案2】:

这里是解决方案 如果你不想使用array_diff()

<?php


  $a = array("c","b","a");
  $b = array("a","b","c");

  if(ArrayCompare($a , $b)){
    echo "100%";
    } else {
      echo "NOT";
    }

  function ArrayCompare($array1 , $array2) {

  $c = 0;
  foreach($array1 as $v) {
    if(in_array($v , $array2)) {
      $c++;    
    }
  }

  if(count($array2) == $c) {
    return true;
  } else {
    return false;
  }

  }

?>

【讨论】:

    【解决方案3】:
    <?php
    function compare($arr1,$arr2)
    {
    $arr3=Array();
    $k=0;
    for($i=0;$i<count($arr1);$i++)
    {
    if(in_array($arr1[$i],$arr2))
    $arr3[$k]=$arr1[$i];
    $k++
    }
    
    if(count($arr3)==count($arr1))
    return true;
    else
    return false;
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      • 1970-01-01
      相关资源
      最近更新 更多