首頁  >  文章  >  後端開發  >  php 二維陣列怎麼去掉重複項

php 二維陣列怎麼去掉重複項

PHPz
PHPz原創
2023-04-19 09:20:11462瀏覽

隨著網路的發展,PHP已經成為了非常流行的程式語言之一。在PHP的開發中,常需要使用到數組這個資料結構。而在實際開發中,我們經常需要對數組進行去重操作。本文將為大家介紹在PHP中如何去除二維數組重複的方法。

二維數組是由一堆數組組成的一個大數組。如果我們需要對這些陣列進行去重操作,就需要使用到PHP中的array_unique()函數。但是,如果直接使用array_unique()函數去除二維數組中的重複項,是無法達到我們預期的效果的。

下面是一個二維陣列的範例,我們需要移除其中的重複項。

$arr = array(
    array('id'=>1, 'name'=>'Tom'),
    array('id'=>2, 'name'=>'Jerry'),
    array('id'=>3, 'name'=>'Bob'),
    array('id'=>1, 'name'=>'Tom')
);

如果我們使用array_unique()函數來移除重複項,如下所示:

$arr = array_unique($arr);

那麼我們會發現執行結果並不如我們預期的一樣。我們需要使用下面的方法才能正確移除二維數組中的重複項。

方法一:

首先我們將需要去重的陣列轉換為字串,然後使用array_unique()函數去除其中的重複項。最後再將結果轉換為PHP數組即可。

$str = '';
foreach ($arr as $k => $v) {
    $str .= implode(',', $v) . ';';
}
$str = implode(',', array_unique(explode(';', trim($str, ';'))));
$arr = array();
foreach (explode(';', $str) as $k => $v) {
    $arr[$k] = explode(',', $v);
}
print_r($arr);

這種方法雖然可以去除二維數組中的重複項,但是比較繁瑣,效率也不高。

方法二:

我們可以使用PHP中的另一個函數array_column(),它可以將一個二維數組中的某個字段全部提取出來,並且返回一個一維數組。

$arr = array(
    array('id'=>1, 'name'=>'Tom'),
    array('id'=>2, 'name'=>'Jerry'),
    array('id'=>3, 'name'=>'Bob'),
    array('id'=>1, 'name'=>'Tom')
);
$idArr = array_column($arr, 'id');
$countArr = array_count_values($idArr);
foreach ($arr as $k => $v) {
    if ($countArr[$v['id']] > 1) {
        unset($arr[$k]);
    }
}
print_r($arr);

這種方法比較簡單,只需要使用兩個函數即可。首先使用array_column()函數提取出二維數組中id字段的所有值,然後使用array_count_values()函數對這些值進行計數。最後遍歷原數組,如果對應的id在$idArr數組中計數大於1,則表示該項需要移除。

從上面的兩個方法可以看出,對於二維數組的去重,相對於一維數組來說,操作起來稍微麻煩一些。但是如果我們採取適當的方法,還是可以比較容易做到去重的。

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

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