PHP在条件语句中比较两个数组

时间:2017-09-21 00:26:06

标签: php arrays

我有两个数组,我想比较第一个和第二个数组。我有一个IF语句,它目前进行两项检查:

  1. 检查我的查询中是否有任何行
  2. 如果上面的内容通过,那么我想遍历第一个数组的数组值并将其与第二个数组进行比较。我想遍历所有names第一个数组(索引0-9)并将其与第二个数组的第一个name进行比较(索引0)。继续做同样的事情,直到我们将第一个数组上的所有索引0-9与第二个数组的所有索引0-9进行比较。
  3. 最后,如果有匹配我要退出我的PHP脚本,否则如果没有匹配我继续做的事情。
  4. 我尝试过使用in_array()函数,但是只能使用单个变量。这样的事情in_array($firstArray[0], $secondArray)有效。像这样:

        if(mysqli_num_rows($result) > 0 && in_array($firstArray[0], $secondArray)){
            exit("exiting now!");
        } 
        else {
            echo "continue to do stuff...";
        }
    

    然而,当我把整个数组放在inArray中时,它不会起作用。像这样:

    in_array($firstArray, $secondArray)

    我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

如果您想知道它们是否相交,可以使用array_intersect,可以使用array_diff查看这两个数组是否有任何差异。

Disposable

示例:

if(mysqli_num_rows($result) > 0 && !array_diff($firstArray, $secondArray)){
       exit("exiting now!");
} else {
       echo "continue to do stuff...";
}

输出:

<?php
$array1 = array (1,2,3,4);
$array2 = array (3,2,1,5);
$array3 = array_diff($array1, $array2);
$array4 = array_intersect($array1, $array2);
echo "<pre>";
echo "Array 1\n ";
print_r($array1);
echo "Array 2\n ";
print_r($array2);

echo "Arrays Difference \n ";
print_r($array3);
echo "Arrays intersect \n ";
print_r($array4);
echo "</pre>";
?>

答案 1 :(得分:1)

我认为您正在寻找array_intersect(),它返回两个(或更多)数组中常见的值。 http://php.net/manual/en/function.array-intersect.php

它返回一个数组,但是如果它返回一个空数组,那么空数组就是假的。