本文实例讲述了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 ($data as $key => $row) {$volume[$key] = $row["volume"];$edition[$key] = $row["edition"];}// 将数据根据 volume 降序排列,根据 edition 升序排列// 把 $data 作为最后一个参数,以通用键排序array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);/*************************************//* 从上面的例子不难看出,array_multisort()函数* 是将每一个二维数组的列作为 一个参数进行排序* 来达到整个数组的排序*//*************************************/function sigcol_arrsort($data,$col,$type=SORT_DESC){if(is_array($data)){$i=0;foreach($data as $k=>$v){if(key_exists($col,$v)){$arr[$i] = $v[$col];$i++;}else{continue;}}}else{return false;}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);这两个数组的每一行都锁在一起,新数组一旦变动顺序,那么就会连带每一行的二维数组也跟着变换顺序 ,即新数组为参照物相当于查询子句中的 order by*/
运行结果:
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程序设计有所帮助。