PHP 根據(jù)key 給二維數(shù)組分組
我們經(jīng)常拿到一個二維數(shù)組出來,會發(fā)現(xiàn)結(jié)果和自己想要的有些偏差,可能需要根據(jù)二維數(shù)組里的某個字段對數(shù)組分組。
先來看以下數(shù)組,
Array ( [0] => Array ( [id] => 1 [wo_id] => 2 [evaluate_id] => 1 [type] => 分組1 [ctime] => 2016-12-02 11:39:34 ) [1] => Array ( [id] => 2 [wo_id] => 31 [evaluate_id] => 2 [type] => 分組1 [ctime] => 2016-12-12 11:39:50 ) [2] => Array ( [id] => 3 [wo_id] => 31 [evaluate_id] => 4 [type] => 分組2 [ctime] => 2016-12-02 11:40:01 ) [3] => Array ( [id] => 4 [wo_id] => 2 [evaluate_id] => 5 [type] => 分組2 [ctime] => 2016-12-07 10:21:40 ) [4] => Array ( [id] => 5 [wo_id] => 2 [evaluate_id] => 3 [type] => 分組2 [ctime] => 2016-12-07 10:21:51 ) [5] => Array ( [id] => 6 [wo_id] => 2 [evaluate_id] => 2 [type] => 分組3 [ctime] => 2016-12-07 10:21:56 ) [6] => Array ( [id] => 7 [wo_id] => 4 [evaluate_id] => 2 [type] => 分組3 [ctime] => 2016-12-07 10:22:10 ) )
這里是一個很典型的例子,如果我希望把 數(shù)組中的數(shù)據(jù) 根據(jù) type(分組) 分開處理,如果不分組,可能循環(huán)上會非常冗余,所以有了下面的一個分組函數(shù):
public static function array_group_by($arr, $key) { $grouped = []; foreach ($arr as $value) { $grouped[$value[$key]][] = $value; } // Recursively build a nested grouping if more parameters are supplied // Each grouped array value is grouped according to the next sequential key if (func_num_args() > 2) { $args = func_get_args(); foreach ($grouped as $key => $value) { $parms = array_merge([$value], array_slice($args, 2, func_num_args())); $grouped[$key] = call_user_func_array('array_group_by', $parms); } } return $grouped; }
$arr : 二維數(shù)組
$key: 需要分組的key
得到的結(jié)果是:
Array ( [分組2] => Array ( [0] => Array ( [id] => 1 [wo_id] => 2 [evaluate_id] => 1 [ctime] => 2016-12-02 11:39:34 [type] => 分組2 ) [1] => Array ( [id] => 2 [wo_id] => 31 [evaluate_id] => 2 [ctime] => 2016-12-12 11:39:50 [type] => 分組2 ) [2] => Array ( [id] => 3 [wo_id] => 31 [evaluate_id] => 4 [ctime] => 2016-12-02 11:40:01 [type] => 分組2 ) ) [分組1] => Array ( [0] => Array ( [id] => 4 [wo_id] => 2 [evaluate_id] => 5 [ctime] => 2016-12-07 10:21:40 [type] => 分組1 ) [1] => Array ( [id] => 5 [wo_id] => 2 [evaluate_id] => 3 [ctime] => 2016-12-07 10:21:51 [type] => 分組1 ) ) )
以上所述是小編給大家介紹的PHP 根據(jù)key 給二維數(shù)組分組,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- PHP根據(jù)key刪除數(shù)組中指定的元素
- PHP使用自定義key實(shí)現(xiàn)對數(shù)據(jù)加密解密的方法
- PHP實(shí)現(xiàn)向關(guān)聯(lián)數(shù)組指定的Key之前插入元素的方法
- PHP實(shí)現(xiàn)二維數(shù)組根據(jù)key進(jìn)行排序的方法
- php array_keys 返回數(shù)組的鍵名
- php array_key_exists() 與 isset() 的區(qū)別
- PHP array_key_exists檢查鍵名或索引是否存在于數(shù)組中的實(shí)現(xiàn)方法
- PHP數(shù)組Key強(qiáng)制類型轉(zhuǎn)換實(shí)現(xiàn)原理解析
相關(guān)文章
Laravel中數(shù)據(jù)遷移與數(shù)據(jù)填充的詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于Laravel中數(shù)據(jù)遷移與數(shù)據(jù)填充的相關(guān)資料,文中通過示例代碼給大家詳細(xì)介紹了實(shí)現(xiàn)的步驟,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起看看吧。2017-12-12laravel 框架實(shí)現(xiàn)無限級分類的方法示例
這篇文章主要介紹了laravel 框架實(shí)現(xiàn)無限級分類的方法,結(jié)合實(shí)例形式分析了Laravel框架基于遞歸遍歷實(shí)現(xiàn)無限極分類輸出的相關(guān)控制器及視圖操作技巧,需要的朋友可以參考下2019-10-10Discuz批量替換帖子內(nèi)容的方法(使用SQL更新數(shù)據(jù)庫)
這篇文章主要介紹了Discuz批量替換帖子內(nèi)容的方法,使用SQL語句實(shí)現(xiàn),用REPLACE函數(shù)批量更新數(shù)據(jù)庫,需要的朋友可以參考下2014-06-06基于 Swoole 的微信掃碼登錄功能實(shí)現(xiàn)代碼
隨著微信的普及,掃碼登錄方式越來越被現(xiàn)在的應(yīng)用所使用。它因?yàn)椴挥萌ビ涀∶艽a,只要有微信號即可方便快捷登錄.這里基于微信公眾平臺的帶參數(shù)臨時二維碼,并且結(jié)合 Swoole 的 WebSocket 服務(wù)實(shí)現(xiàn)掃碼登錄2018-01-01淺談laravel中的關(guān)聯(lián)查詢with的問題
今天小編就為大家分享一篇淺談laravel中的關(guān)聯(lián)查詢with的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10全新的PDO數(shù)據(jù)庫操作類php版(僅適用Mysql)
在公司里也用了1年之久。如今公司規(guī)模變大了,產(chǎn)品也日益完善,曾經(jīng)的那個數(shù)據(jù)庫操作函數(shù)雖說使用上沒出什么大問題,但為了更顯專業(yè),花了1天時間重寫了這個,現(xiàn)在,它確實(shí)是個類了2012-07-07thinkphp5框架結(jié)合mysql實(shí)現(xiàn)微信登錄和自定義分享鏈接與圖文功能示例
這篇文章主要介紹了thinkphp5框架結(jié)合mysql實(shí)現(xiàn)微信登錄和自定義分享鏈接與圖文功能,涉及基于curl的微信接口調(diào)用、數(shù)據(jù)庫操作等相關(guān)使用技巧,需要的朋友可以參考下2019-08-08