在 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