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程序设计有所帮助。