PHP二維陣列去重(指定鍵名)

2022-03-13 16:22:31 字數 1581 閱讀 1826

本例對二維陣列中某個指定鍵名進行去重,發現網上大多使用array_unique或是foreach遍歷等方式去重,效果不佳且較為繁瑣。

本文以二維陣列去重為引,介紹array_column函式的三種用法。

以下是本人常用的去重方法:

以指定欄位為索引,自然會把索引欄位中重複的值覆蓋掉, 然後在去除關聯索引就可以了

//array_column第一種用法,以指定欄位為索引

$data= array

(array('id' => 123, 'name' => '張三'),

array('id' => 123, 'name' => '李四'),

array('id' => 124, 'name' => '王五'),

array('id' => 125, 'name' => '趙六'),

array('id' => 126, 'name' => '趙六')

);

上述是乙個二維陣列,我們需要把相同 id 的記錄去掉,即乙個id只保留一條記錄;只使用第三個引數試驗,

$data = array_column($data, null, 'id');   //以id為索引

$data = array_values($data);         //去除關聯索引

ok,去重完成,此時$data資料如下:五條記錄變為四條

$data= array

(array('id' => 123, 'name' => '張三'),

array('id' => 124, 'name' => '王五'),

array('id' => 125, 'name' => '趙六'),

array('id' => 126, 'name' => '趙六')

);

另外,講下第二個引數,代表需要保留的(單)列,下面我們將使用第二個引數,而不使用第三個引數。

array_column第二種用法:

$data = array_column($data, 'name');

此時二維陣列只保留 name 字段,id欄位被刪除,資料如下:

$data= array

(array('name' => '張三'),

array('name' => '李四'),

array('name' => '王五'),

array('name' => '趙六'),

array('name' => '趙六')

);

array_column的第三種用法,

三個引數全部使用: 用來構造 'id' => 'name' 形式的資料

$data = array_column($data, 'name', 'id');

此時資料如下:此時id重複的也被剔除了,前面的被覆蓋。

$data = array

( '123' => '李四',

'124' => '王五',

'125' => '趙六',

'126' => '趙六');

see you ~

php二維陣列去重

方法一 傳入引數 array二維陣列,unique唯一碼 二維陣列去重,傳出 二維陣列 public function array unique array,unique if in array value unique uni return out 方法二 傳入引數 array二維陣列,uniqu...

php 二維陣列去重

一維陣列的重複項 使用array unique函式即可,使用例項如下 如下 複製 二維陣列去重項 如下 複製 例如 result array 0 array a 1,b hello 1 array a 1,b other 2 array a 1,b other 處理成 result array 0 ...

php二維陣列去重

前言 php一維陣列去重很簡單,直接array unique arr 即可,但是二維陣列去重就得自己去寫了 二維陣列去重方法 二維陣列去重 注意 二維陣列中的元素個數必須一致,且鍵值也得一致,否則無意義 param array arr return array arr after public fu...