各种操作都是用复杂度不同的数组来完成的,比较操作也不例外。当我们比较两个值时,我们打算了解它们的相似或不同之处。
对于数字(整数和浮点数)、字符和字符串,它可以很简单。但是,对于数组,它可能会变得有点复杂。
不要担心,因为它很简单,而且我们可以使用不同的运算符。无论比较严格与否,都有一个运算符。
本文将讨论四个运算符和三个函数,它们使比较两个数组变得容易,以及如何通过出色的示例来实现它。
在 PHP 中使用 ==
和 !=
运算符比较两个数组
第一个运算符是 ==
运算符。它是相等运算符,当我们用这个运算符比较两个数组时,我们打算知道第一个数组是否等于第二个数组。
比较操作的重点是找出两个值之间的相似之处或不同之处。因此,使用 ==
运算符,你可以获得布尔响应,其中 TRUE 表示相似性,FALSE 表示不相似性。
在这里,代码使用 ==
运算符来比较两个数组。
<?php
$arr1 = array(4, 5, 'hello', 2.45, 3.56);
$arr2 = array(5, 2.45, 'hello', 3.56, 4);
// Check for equality
if ($arr1 == $arr2)
echo "Similar Arrays";
else
echo "Not Similar Arrays";
?>
输出:
Not Similar Arrays
你可以使用!=
运算符,一个不等式运算符。当我们用这个运算符比较两个数组时,我们打算知道第一个数组是否不等于第二个数组。
它发布一个布尔响应,其中 TRUE 表示不相似,FALSE 表示相似。
<?php
$arr1 = array(4, 5, 'hello', 2.45, 3.56);
$arr2 = array(5, 2.45, 'hello', 3.56, 4);
// Check for inequality
if ($arr1 != $arr2)
echo "Not Similar Arrays";
else
echo "Similar Arrays";
?>
输出:
Not Similar Arrays
这两个运算符适用于关联数组和多维数组,并且只会比较值,而不是键。
在 PHP 中使用 ===
和 !==
运算符比较两个数组
与 ==
运算符类似,===
运算符允许比较两个值的相似性。但是,如果第一个数组和第二个数组在关联数组的上下文中具有相同的键/值对,则 ==
运算符将返回 TRUE。
但是,如果第一个数组和第二个数组具有相同顺序和相同类型的相同键/值对,===
将返回 TRUE。
使用上一节中的相同代码,我们将进行一些类型更改并同时使用 ==
和 ===
运算符。
<?php
$arr1 = array(4, 5, 'hello', 2.45, 3.56);
$arr2 = array('4', '5', 'hello', '2.45', '3.56');
// Check for equality
if ($arr1 == $arr2)
echo "Similar Arrays";
else
echo "Not Similar Arrays";
?>
输出:
Similar Arrays
当我们使用 ===
运算符时
<?php
$arr1 = array(4, 5, 'hello', 2.45, 3.56);
$arr2 = array('4', '5', 'hello', '2.45', '3.56');
// Check for equality
if ($arr1 === $arr2)
echo "Similar Arrays";
else
echo "Not Similar Arrays";
?>
当我们将它与关联数组一起使用时,我们会看到相同的行为。在下面的代码中,我们将比较两个数组的值而不是键。
<?php
$arr1 = array("first" => 4, "second" => 5, "type" => 'hello');
$arr2 = array("one" => '4', "two" => '5', "third" => 'hello', );
// Check for equality
if ($arr1 === $arr2)
echo "Similar Arrays";
else
echo "Not Similar Arrays";
?>
输出:
Not Similar Arrays
在 PHP 中当顺序不重要时使用 sort()
函数来比较两个数组
对于元素顺序不重要的情况,你可以使用 sort()
函数并比较两个数组。因此,你将 sort()
函数应用于两个数组,然后比较排序后的数组是否相等。
<?php
$arr1 = array(4, 5, 'hello', 2.45, 3.56);
$arr2 = array(5, 2.45, 'hello', 3.56, 4);
// Sort the array elements
sort($arr1);
sort($arr2);
// Check for equality
if ($arr1 == $arr2)
echo "Both arrays are same, when sorted";
else
echo "Both arrays are not same, even when sorted";
?>
输出:
Both arrays are same, when sorted
在 PHP 中使用 array_diff()
函数比较两个数组并返回差值
我们可以比较两个数组并返回两个数组之间的差异,为此,我们使用 array_diff()
函数。使用这个函数,我们可以比较两个数组,并期望返回一个数组,其中包含第一个数组中不包含在第二个数组中的元素。
<?php
$first = array("12", 34, true, 45, 67);
$second = array("12", 21, 89, 45);
print_r(array_diff($first, $second));
?>
输出:
Array
(
[1] 34
[2] 1
[4] 67
)
true
你必须知道将数组放置在 array_diff()
函数中的顺序会影响返回数组。使用相同的代码,如果我们改变数组的顺序,下面的输出就是结果。
Array
(
[1] 21
[2] 89
)
true
如果没有区别,代码将返回一个空数组。
在 PHP 中使用 array_intersect()
函数比较两个数组并返回匹配项
使用 array_intersect()
函数,你可以比较两个数组并返回存在于两个元素中的元素。使用上一节中相同的两个数组,你会在返回数组中找到 12
和 45
。
<?php
$first = array("12", 34, true, 45, 67);
$second = array("12", 21, 89, 45);
print_r(array_intersect($first, $second));
?>
输出:
Array
(
[0] 12
[3] 45
)
true