隨著網路的發展,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中文網其他相關文章!