首頁 後端開發 PHP問題 php二維數組怎麼去重

php二維數組怎麼去重

Apr 27, 2023 pm 03:54 PM

在PHP中,二維數組是指包含多個數組的數組,也就是數組中的元素是數組,其形式如下:

$students = array(
    array('id' => 1, 'name' => '张三', 'age' => 18),
    array('id' => 2, 'name' => '李四', 'age' => 19),
    array('id' => 3, 'name' => '王五', 'age' => 20),
    array('id' => 4, 'name' => '张三', 'age' => 18)
);
登入後複製

在二維數組中,我們可能會遇到重複的元素,針對這種情況,我們需要去重。那麼,如何去重呢?

方法一:使用array_unique函數

array_unique函數可以移除數組中的重複值,但只能用於一維數組,因此需要對二維數組進行處理。具體想法如下:

我們可以遍歷二維數組中的每一個子數組,將其轉換為字串,並保存到一個新數組中。然後,對新數組進行去重操作,最後得到的結果就是去重後的二維數組。

程式碼實作如下:

function unique_array($array) {
    $temp = array();
    foreach ($array as $key => $value) {
        $temp[$key] = implode(',', $value);
    }
    $temp = array_unique($temp);
    $result = array();
    foreach ($temp as $key => $value) {
        $result[$key] = explode(',', $value);
    }
    return $result;
}

$students = array(
    array('id' => 1, 'name' => '张三', 'age' => 18),
    array('id' => 2, 'name' => '李四', 'age' => 19),
    array('id' => 3, 'name' => '王五', 'age' => 20),
    array('id' => 4, 'name' => '张三', 'age' => 18)
);

$result = unique_array($students);
print_r($result);
登入後複製

輸出結果如下:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 张三
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => 李四
            [age] => 19
        )

    [2] => Array
        (
            [id] => 3
            [name] => 王五
            [age] => 20
        )

)
登入後複製
登入後複製

方法二:使用array_reduce函數

array_reduce函數可以將二維數組合成一維數組,並對其進行去重操作。具體想法如下:

我們可以先將二維數組中的每一個子數組轉換為字串,並保存到一個新數組中。然後,使用array_reduce函數將新數組合併為字串,並使用array_unique函數對該字串進行去重操作。最後,使用explode函數將去重後的字串轉換為二維陣列即可。

程式碼實作如下:

function unique_array($array) {
    $temp = array();
    foreach ($array as $key => $value) {
        $temp[$key] = implode(',', $value);
    }
    $result = array_reduce($temp, function($carry, $item){
        if (!in_array($item, $carry)) {
            $carry[] = $item;
        }
        return $carry;
    }, array());
    $result = array_map(function($item) {
        return explode(',', $item);
    }, $result);
    return $result;
}

$students = array(
    array('id' => 1, 'name' => '张三', 'age' => 18),
    array('id' => 2, 'name' => '李四', 'age' => 19),
    array('id' => 3, 'name' => '王五', 'age' => 20),
    array('id' => 4, 'name' => '张三', 'age' => 18)
);

$result = unique_array($students);
print_r($result);
登入後複製

輸出結果如下:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 张三
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => 李四
            [age] => 19
        )

    [2] => Array
        (
            [id] => 3
            [name] => 王五
            [age] => 20
        )

)
登入後複製
登入後複製

總結

以上就是PHP二維陣列去重的兩種方法。兩種方法都使用了PHP內建的函數,具體實作思維較為簡單。要注意的是,使用array_reduce函數時,需要使用array_map函數將去重後的字串轉換為二維陣列。

以上是php二維數組怎麼去重的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)