PHP の 2 次元配列を特定のフィールドに従ってソートする
この記事で実装する関数は、以前のプロジェクトで発生した MySQL の ORDER BY と似ています。
要件: 2 つの異なるテーブルから 4 つのデータを取得し、配列に統合 (array_merge) し、データに基づいて並べ替えます。最初の 4 項目は作成時間の降順で表示されます。
この要件が発生した場合、ORDER BY では問題を解決できません。そこでPHPのマニュアルを調べて以下の方法を見つけたのでメモしておきます。
くだらない話はやめてください。コードは次のとおりです。リストは次のとおりです:
<?php/** * 二维数组根据某个字段排序 * 功能:按照用户的年龄倒序排序 * @author ruxing.li */header('Content-Type:text/html;Charset=utf-8');$arrUsers = array( array( 'id' => 1, 'name' => '张三', 'age' => 25, ), array( 'id' => 2, 'name' => '李四', 'age' => 23, ), array( 'id' => 3, 'name' => '王五', 'age' => 40, ), array( 'id' => 4, 'name' => '赵六', 'age' => 31, ), array( 'id' => 5, 'name' => '黄七', 'age' => 20, ),); $sort = array( 'direction' => 'SORT_DESC', //排序顺序标志 SORT_DESC 降序;SORT_ASC 升序 'field' => 'age', //排序字段);$arrSort = array();foreach($arrUsers AS $uniqid => $row){ foreach($row AS $key=>$value){ $arrSort[$key][$uniqid] = $value; }}if($sort['direction']){ array_multisort($arrSort[$sort['field']], constant($sort['direction']), $arrUsers);}var_dump($arrUsers);/*输出结果:array (size=5) 0 => array (size=3) 'id' => int 5 'name' => string '黄七' (length=6) 'age' => int 20 1 => array (size=3) 'id' => int 2 'name' => string '李四' (length=6) 'age' => int 23 2 => array (size=3) 'id' => int 1 'name' => string '张三' (length=6) 'age' => int 25 3 => array (size=3) 'id' => int 4 'name' => string '赵六' (length=6) 'age' => int 31 4 => array (size=3) 'id' => int 3 'name' => string '王五' (length=6) 'age' => int 40*/
この記事CSDN からの転載です。出典を明記してください。元のアドレス: http://blog.csdn.net/liruxing1715/article/details/28265495