PHP实现二维数组按某列进行排序的方法
本文实例讲述了PHP实现二维数组按某列进行排序的方法。分享给大家供大家参考,具体如下:
/* *二维数组按某列排序 *array_multisort($arr1,$arr2) *手册例子如下 * */ $data[]=array('volume'=>67,'edition'=>2); $data[]=array('volume'=>86,'edition'=>1); $data[]=array('volume'=>85,'edition'=>6); $data[]=array('volume'=>98,'edition'=>2); $data[]=array('volume'=>86,'edition'=>6); $data[]=array('volume'=>67,'edition'=>7); //取得列的列表 foreach($dataas$key=>$row){ $volume[$key]=$row['volume']; $edition[$key]=$row['edition']; } //将数据根据volume降序排列,根据edition升序排列 //把$data作为最后一个参数,以通用键排序 array_multisort($volume,SORT_DESC,$edition,SORT_ASC,$data); /*************************************/ /*从上面的例子不难看出,array_multisort()函数 *是将每一个二维数组的列作为一个参数进行排序 *来达到整个数组的排序 */ /*************************************/ functionsigcol_arrsort($data,$col,$type=SORT_DESC){ if(is_array($data)){ $i=0; foreach($dataas$k=>$v){ if(key_exists($col,$v)){ $arr[$i]=$v[$col]; $i++; }else{ continue; } } }else{ returnfalse; } array_multisort($arr,$type,$data); return$data; } print_r(sigcol_arrsort($data,'edition',SORT_DESC)); /*说白了原理就是: 新数组原二维数组 2array('volume'=>67,'edition'=>2); 1array('volume'=>86,'edition'=>1); 6array('volume'=>85,'edition'=>6); 2array('volume'=>98,'edition'=>2); 6array('volume'=>86,'edition'=>6); 7array('volume'=>67,'edition'=>7); 这两个数组的每一行都锁在一起,新数组一旦变动顺序, 那么就会连带每一行的二维数组也跟着变换顺序,即新数组为参照物 相当于查询子句中的orderby */
运行结果:
Array ( [0]=>Array ( [volume]=>67 [edition]=>7 ) [1]=>Array ( [volume]=>85 [edition]=>6 ) [2]=>Array ( [volume]=>86 [edition]=>6 ) [3]=>Array ( [volume]=>67 [edition]=>2 ) [4]=>Array ( [volume]=>98 [edition]=>2 ) [5]=>Array ( [volume]=>86 [edition]=>1 ) )
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《php字符串(string)用法总结》、《PHP针对XML文件操作技巧总结》、《PHP错误与异常处理方法总结》、《PHP运算与运算符用法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。