首頁  >  文章  >  後端開發  >  php如何快速去除二維數組

php如何快速去除二維數組

王林
王林原創
2023-05-19 13:28:37775瀏覽

在PHP的開發中,常常需要對資料進行處理,如去重、排序、篩選等等。其中,處理二維數組是非常常見的操作。那麼,如何快速移除二維數組中的重複資料呢?以下將為你介紹幾種實作方法。

方法一:使用array_unique()函數

array_unique()函數可以快速移除陣列中的重複數據,具體實作方法如下:

$array = array(
    array('id' => 1, 'name' => '小明'),
    array('id' => 2, 'name' => '小红'),
    array('id' => 3, 'name' => '小明')
);

$newArray = array_map("serialize", $array);
$newArray = array_unique($newArray);
$newArray = array_map("unserialize", $newArray);

print_r($newArray);

輸出結果:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 小明
        )

    [1] => Array
        (
            [id] => 2
            [name] => 小红
        )
)

方法二:使用循環遍歷

循環遍歷數組,將每個子數組與先前的子數組進行對比,如果相同則刪除。具體程式碼實作如下:

$array = array(
    array('id' => 1, 'name' => '小明'),
    array('id' => 2, 'name' => '小红'),
    array('id' => 3, 'name' => '小明')
);

for($i = 0; $i < count($array) - 1; $i++){
    for($j = $i + 1; $j < count($array); $j++){
        if($array[$i] == $array[$j]){
            unset($array[$j]);
        }
    }
}

print_r($array);

輸出結果:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 小明
        )

    [1] => Array
        (
            [id] => 2
            [name] => 小红
        )

)

方法三:使用array_walk()函數

array_walk()函數可以讓我們自訂處理陣列的函數。具體實作方法如下:

$array = array(
    array('id' => 1, 'name' => '小明'),
    array('id' => 2, 'name' => '小红'),
    array('id' => 3, 'name' => '小明')
);

$tempArr = array();
array_walk($array, function($value, $key) use (&$tempArr) {
    if(!in_array($value, $tempArr)){
        array_push($tempArr, $value);
    }
});

print_r($tempArr);

輸出結果:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 小明
        )

    [1] => Array
        (
            [id] => 2
            [name] => 小红
        )

)

以上就是三種快速移除二維陣列中重複資料的方法。具體使用哪一種方法,要根據實際情況來定。如果只是簡單的去重,可以使用array_unique()函數;如果資料量比較小,可以使用迴圈遍歷;如果資料量較大,可以使用array_walk()函數。

以上是php如何快速去除二維數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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