php 二維陣列進行假的 group by 資料篩選

有些時候我們在資料庫存取後會拿到一些很髒的資料,要作資料的篩選整理。
這次我們要做的動作就是,兩個相同格式的二為陣列要去過濾出重複的某個 key 值不要讓他一直出現:
例如:



$arr1[] = array(
 'order_id'=>'00001',
 'name'=>"james",
);
$arr1[] = array(
 'order_id'=>'00002',
 'name'=>"james 2",
);
$arr1[] = array(
 'order_id'=>'00003',
 'name'=>"james 3",
);


$arr2[] = array(
 'order_id'=>'00002',
 'name'=>"james 2",
);
$arr2[] = array(
 'order_id'=>'00003',
 'name'=>"james 3",
);
$arr2[] = array(
 'order_id'=>'00004',
 'name'=>"james 4",
);
我們分別拿到 arr1 和 arr2 的陣列資料,如果我們直接把他們兩個合併,那麼 00002 00003 就會被重複兩次。
這時候我們就可以簡單的呼叫一下這個 function 來作過濾
// 先合起來兩個陣列
$result = array_merge($arr1, $arr2);
// 進行過濾
$result_2 = group_by($result,'order_id');
這樣我們拿到的 result_2 就會過濾掉重複的 order_id 資料


這個 function 我會放在
https://github.com/gwolf0719/lib_functions
這個 github 中隨時更新

如果是使用 CodeIgniter 的話 可以把整個專案掛進去 application/libraries 中就可以直接取用摟

$this->arr->group_by($arr,$group_by,$where='');

 /**
     * 把記憶體當資料庫使用~ group_by
     * $arr 原始陣列
     * $group_by 要被 group_by 的欄位
     * $where參數請帶陣列
     * $where = array(
     *  col_1=>val_1,
     *  col_2=>val_2
     * );
     */

留言