在 PHP 中比较两个数组

Olorunfemi Akinlua 2023年1月30日
  1. 在 PHP 中使用 ==!= 运算符比较两个数组
  2. 在 PHP 中使用 ===!== 运算符比较两个数组
  3. 在 PHP 中当顺序不重要时使用 sort() 函数来比较两个数组
  4. 在 PHP 中使用 array_diff() 函数比较两个数组并返回差值
  5. 在 PHP 中使用 array_intersect() 函数比较两个数组并返回匹配项
在 PHP 中比较两个数组

各种操作都是用复杂度不同的数组来完成的,比较操作也不例外。当我们比较两个值时,我们打算了解它们的相似或不同之处。

对于数字(整数和浮点数)、字符和字符串,它可以很简单。但是,对于数组,它可能会变得有点复杂。

不要担心,因为它很简单,而且我们可以使用不同的运算符。无论比较严格与否,都有一个运算符。

本文将讨论四个运算符和三个函数,它们使比较两个数组变得容易,以及如何通过出色的示例来实现它。

在 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() 函数,你可以比较两个数组并返回存在于两个元素中的元素。使用上一节中相同的两个数组,你会在返回数组中找到 1245

<?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
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

相关文章 - PHP Array