以下代码主要实现二维数组按指定键值排序。
源码:
- function array_msort($array, $cols)
- {
- $colarr = array();
- foreach ($cols as $col => $order) {
- $colarr[$col] = array();
- foreach ($array as $k => $row) { $colarr[$col]['_'.$k] = strtolower($row[$col]); }
- }
- $eval = 'array_multisort(';
- foreach ($cols as $col => $order) {
- $eval .= '$colarr[\''.$col.'\'],'.$order.',';
- }
- $eval = substr($eval,0,-1).');';
- eval($eval);
- $ret = array();
- foreach ($colarr as $col => $arr) {
- foreach ($arr as $k => $v) {
- $k = substr($k,1);
- if (!isset($ret[$k])) $ret[$k] = $array[$k];
- $ret[$k][$col] = $array[$k][$col];
- }
- }
- return $ret;
- }
用法:
- $data = array_msort($data,array('键名'=>SORT_ASC));
上述方法可以升序,可以降序。所以剩下的也不多说了。