PHP array_unique函數:數組去重必備利器

在PHP中,數組是常用的數據類型之一。在進行數組操作時,經常會遇到需要去除數組中的重複元素的情況。這時,PHP中的array_unique函數就變得非常重要。

一、array_unique函數的基本使用

array_unique函數可以對數組進行去重操作,並返回一個新數組。

$oldArr = array('apple', 'banana', 'apple', 'orange');
$newArr = array_unique($oldArr);
print_r($newArr);

輸出結果為:

Array
(
    [0] => apple
    [1] => banana
    [3] => orange
)

可以看到,$oldArr數組中的重複元素被去掉了。

二、array_unique函數的高級使用

1. 對多維數組進行去重。

當數組元素為數組時,array_unique函數只能去除第一維數組中的重複元素。如果需要對多維數組進行去重操作,我們可以使用下面的方法:

function array_multi_unique($multiArray)
{
    $uniqueArray = array();
    foreach ($multiArray as $k => $v) {
        if(!in_array($v, $uniqueArray)) {
            $uniqueArray[] = $v;
        }
    }
    return $uniqueArray;
}

$oldArr = array(
    array('apple', 'banana', 'apple', 'orange'),
    array('apple', 'pear'),
    array('banana', 'orange', 'orange')
);
$newArr = array_map('array_multi_unique', $oldArr);
print_r($newArr);

輸出結果為:

Array
(
    [0] => Array
        (
            [0] => apple
            [1] => banana
            [3] => orange
        )

    [1] => Array
        (
            [0] => apple
            [1] => pear
        )

    [2] => Array
        (
            [0] => banana
            [1] => orange
        )

)

可以看到,$oldArr數組中的重複元素被去掉了。

2. 去除數組中重複元素,並保留重複元素的鍵名。

有時候我們需要刪除重複元素,但是要保留重複元素的鍵名。可以使用array_unique函數結合array_flip函數實現:

$oldArr = array('apple', 'banana', 'apple', 'orange');
$newArr = array_flip(array_flip($oldArr));
print_r($newArr);

輸出結果為:

Array
(
    [0] => apple
    [1] => banana
    [3] => orange
)

可以看到,$oldArr數組中的重複元素被去掉了,並保留了重複元素的鍵名。

三、array_unique函數的注意事項

1. 副作用。

使用array_unique函數時,需要注意它會「重置」數組下標。例如:

$oldArr = array('apple', 'banana', 'apple', 'orange');
$newArr = array_unique($oldArr);
print_r($newArr);
echo count($newArr);

輸出結果為:

Array
(
    [0] => apple
    [1] => banana
    [3] => orange
)
3

注意到輸出結果的第二個3,這是因為去重後的$newArr數組下標從0開始重新計數了,但count函數統計的數組元素個數還是按照原來的長度計算,導致結果出現了問題。

2. 非嚴格相等比較。

使用array_unique函數時,需要注意它使用的是非嚴格相等比較,也就是說兩個值相等時,類型不同也會判定為相等。例如:

$oldArr = array('1', 1, true);
$newArr = array_unique($oldArr);
print_r($newArr);

輸出結果為:

Array
(
    [0] => 1
)

可以看到,1和’1’被判定為相等的,array_unique函數將其視為重複元素去掉了一個。

四、總結

array_unique函數是PHP中用於數組去重的重要函數之一。它不僅可以對普通數組進行去重,還可以對多維數組進行去重並保留重複元素的鍵名。但是在使用時,需要注意去重後數組下標的「重置」問題和使用非嚴格相等比較導致的重複元素漏判問題。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/181901.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-23 06:43
下一篇 2024-11-23 06:43

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29

發表回復

登錄後才能評論