【问题标题】:How to check it elemets of an array are in another array如何检查数组的元素是否在另一个数组中
【发布时间】:2021-12-03 01:56:16
【问题描述】:

我有一个问题, 我有这个数组

$items= array('ABC','DEF',GHI');

还有另外两个数组

$array1 = array('ABC','DEF',GHI');

$array2 = array('DEF');

$array1 应该返回TRUE,因为所有元素都在$items

$array2 应该返回 FALSE,因为 'ABC' 和 'GHI' 不在该数组中

我用array_intersectarray_diff 试过了,但我无法得到它,

  $result = array_intersect($items,$array1);
  $result = !array_diff($items,$array1);

你能帮帮我吗? 问候 马里奥

【问题讨论】:

  • 如果$array1 有其他值,比如'JKL',它仍然是true吗?
  • 那将是错误的,
  • 那么数组需要完全相同吗?那就用==吧。
  • $array2 的所有元素都在$items 中。为什么是假的?
  • 对数组进行排序,如果每个数组都必须包含另一个数组的所有元素,则使用==

标签: php arrays array-difference array-intersect


【解决方案1】:

如果不想使用array_diff,可以使用多维数组。

将你的数组放入另一个数组中:

$items1= array(
    array(0=>"ABC", 1=> "DEF", 2=>"GHI"),
    array(0=>"ABC", 1=> "DEF", 2=>"GHI"),
    array(0=>"DEF"),
);

用条件语句检查它们:

if($items1[0]==$items1[1]){
    echo "true";
}if($items1[1]==$items1[2]){
    echo "true 2";
}else{
    echo "false";
}

【讨论】:

    【解决方案2】:

    要查看数组是否至少包含$items 中的所有值,只需从数组中获取同样位于$items 中的所有值并将其与$items 进行比较:

    $result = (array_intersect($array1, $items) == $items);
    

    如果你只需要比较数组:

    $result = ($array1 == $items);
    

    但是为什么这对你不起作用:

    $result = !array_diff($items, $array1);
    

    【讨论】:

    • 我尝试了 == 但如果我将顺序更改为 'DEF','ABC',GHI' 这给了我错误,但它应该是真的,因为顺序无关紧要,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2017-03-03
    • 2010-10-06
    • 1970-01-01
    • 2020-06-13
    • 2017-02-10
    相关资源
    最近更新 更多