php二维数组排序函数大小排序问题

对二维数组指定项排序 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 19时,
代码片段(1)
1.&[代码][PHP]代码&&&&
$array_name:传入的数组;
$row_id:数组想排序的项;
$order_type:排序的方式,ASC或者DESC;
function array_sort($array_name,$row_id,$order_type){
$array_temp=array();
foreach($array_name as $key=&$value){//循环一层;
$array_temp[$key]=$value[$row_id];//新建一个一维的数组,索引值用二维数组的索引值;值为二维数组要比较的项目的值;
if($order_type==="ASC"){
asort($array_temp);
arsort($array_temp);
$result_array=array();
foreach($array_temp as $key=&$value){//对进行筛选过的数组遍历;
$result_array[]=$array_name[$key];//新建一个结果数组,将原来传入的数组改变键值顺序后赋值给结果数组(原来数组不变);
return $result_
//以下是测试
$arr=array(array('num'=&7,'value'=&4),
array('num'=&3,'value'=&45),
array('num'=&38,'value'=&27));
$sortarr=array_sort($arr,'value','ASC');
print_r($sortarr);
开源中国-程序员在线工具:
开源从代码分享开始
wp花园的其它代码PHP中二维数组排序问题 - 突袭新闻
当前位置&:&&&&PHP中二维数组排序问题
热门标签:&
PHP中二维数组排序问题
编辑:王可评论:
varcpro_id='u260852';PHP中二维数组排序,可以使用PHP内置函数uasort()【使用用户自定义的比较函数对数组中的值进行排序并保持索引关联】回调函数如下:注意回调函数的返回值是负数或者是false的时候,表示回调函数的第一个参数在前,第二个参数在后排列$person=array(array('num'=&'001','id&#3...
var cpro_id = 'u260852';
PHP中二维数组排序,可以使用PHP内置函数uasort()
【使用用户自定义的比较函数对数组中的值进行排序并保持索引关联】
回调函数如下:注意回调函数的返回值是负数或者是false的时候,表示回调函数的第一个参数在前,第二个参数在后排列
$person = array(
array('num'=&'001','id'=&6,'name'=&'zhangsan','age'=&21),
array('num'=&'001','id'=&7,'name'=&'ahangsan','age'=&23),
array('num'=&'003','id'=&1,'name'=&'bhangsan','age'=&23),
array('num'=&'001','id'=&3,'name'=&'dhangsan','age'=&23),
//负数或者false表示第一个参数应该在前
function sort_by_name($x,$y){
return strcasecmp($x['name'],$y['name']);
使用如下:
uasort($person,'sort_by_name');
下面给出一个二维数组排序的方法,供参考和面试使用:
//$array 要排序的数组
排序依据列
排序类型[asc or desc]
//return 排好序的数组
function array_sort($array,$row,$type){
$array_temp = array();
foreach($array as $v){
$array_temp[$v[$row]] = $v;
if($type == 'asc'){
ksort($array_temp);
}elseif($type='desc'){
krsort($array_temp);
return $array_
=====================================================================
这里顺便说一下PHP排序的几个函数
【sort 对数组排序】一般适用于一维索引数组,不会保持索引
【rsort 对数组逆向排序】 和sort用法一致
【asort 对数组进行排序并保持索引关系】对值进行排序,一般适用于一维数组,保持索引关系
【arsort 对数组进行逆向排序并保持索引关系】和asort用法一致
【ksort 对数组按照键名排序】
【krsort 对数组按照键名逆向排序】
=====================================================================
罗永浩与坚果:一支强弩的妥协
SOHO 3Q转型不易!来,看下潘石屹的复盘与前瞻
全民直播时代来临, 移动直播创业风往哪吹?
本网最新文章怎样实行根据总分的大小,如何将整行数据进行由高至低地排序(用冒泡法)原程序:
#include&stdio.h&main(){
int num[30][5],n,a,j,t[30][5];printf("请输入学生人数:");scanf("%d",&a);for(n=0;n&a;n++){
printf("请输入学生的学号:");
scanf("%d",&num[n]);
printf("请输入数学(MT)、英语(EN)和物理(PH)(以逗号分开):");
scanf("%d,%d,%d",&num[n][1],&num[n][2],&num[n][3]);
num[n][4]=num[n][1]+num[n][2]+num[n][3];}printf("学号\tMT\tEN\tPH\t总分\t平均分\n");for(n=0;n&a;n++)printf("%d\t%d\t%d\t%d\t%d\t%.2f\n",num[n][0],num[n][1],num[n][2],num[n][3],num[n][4],(float)num[n][4]/3.0);}
<dd style="float:cursor:" title="声誉值:
该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
将num[n][4]组成的数组进行冒泡,在交换的时候将num[n][0] num[n][1] num[n][2] num[n][3]同时交换!不过最好还是把学号,MT,EN,PH,SUM放到一个结构体中,这样的话在排序的时候就不用这么麻烦!只需要对其中一列数据排序,其余的也就自动排好了!
struct info{
不是您所需,查看更多相关问题与答案
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (4647) 次  需求是这样的:
  这里简述一下:    
现在有一个不确定长度的数组.比如:var temp=[["Fu","Hai","Huan"],["Wei","You"],["Chong","Tong","Zhong"]];每一个数组的长计都不确定
,如何 遍历这个数组得到如: FuWeiChong ,FuWeiTong这样的数据
  这是一个JS二维数组排序组合问题,用递规法解决如下:
function doExchange(doubleArrays){
var len=doubleArrays.
if(len&=2){
var len1=doubleArrays[0].
var len2=doubleArrays[1].
var newlen=len1*len2;
var temp=new Array(newlen);
var index=0;
for(var i=0;i&len1;i++){
for(var j=0;j&len2;j++){
temp[index]=doubleArrays[0][i]+
doubleArrays[1][j];
var newArray=new Array(len-1);
for(var i=2;i&i++){
newArray[i-1]= doubleArrays[i];
newArray[0]=
return doExchange(newArray);
return doubleArrays[0];
  测试代码:
1 var temparr=[2
["Fu","Hai","Huan"],3
["Wei","You"],4
["Chong","Tong","Zhong"]];5
var ret = doExchange(temparr);6
console.log("共有:" + ret.length + "种组合!");7
for (var i = 0; i & ret. i++) {8
console.log(ret[i]);9
效果如下:
阅读(...) 评论()
var ME = {
"name": "土豆/Artwl",
"job": "coding",
"languages": [
"JS", "HTML",
"CSS", "jQuery"
"MVC",".NET",
"设计模式"
"hobby": [
"阅读", "旅游",
"音乐", "电影"C语言程序题,根据二维数组第二个数的大小排序从小到大.比如:有s[12][2].初始值为1 33 40 73 815 1915 2010 158 186 125 104 142 9现在要如题排序了.结果应该是1 33 40 73 82 95 106 124 1410 158 1815 1915 20并且将这结果仍然保存在s[12][2]中.输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n
小百wan1960
#include&&stdio.h&void&sort(int&a[][2],int&n)&{\x09int&i,j,k,t;\x09for(i&=&0;&i&&&n&-&1;&++i)&{\x09\x09k&=&i;\x09\x09for(j&=&i&+&1;&j&&&n;&++j)&{\x09\x09\x09if(a[k][1]&&&a[j][1])\x09\x09\x09\x09k&=&j;\x09\x09}\x09\x09if(k&!=&i)&{\x09\x09\x09for(j&=&0;&j&&&2;&++j)&{\x09\x09\x09\x09t&=&a[k][j];\x09\x09\x09\x09a[k][j]&=&a[i][j];\x09\x09\x09\x09a[i][j]&=&t;\x09\x09\x09}\x09\x09}\x09}}int&main()&{\x09int&a[12][2]&=&{1,3,3,4,0,7,3,8,15,19,15,20,10,15,8,18,6,12,5,10,4,14,2,9};\x09int&i,j;\x09printf(&排序前:\n&);\x09for(i&=&0;&i&&&12;&++i)&{\x09\x09for(j&=&0;&j&&&2;&++j)\x09\x09\x09printf(&%4d&,a[i][j]);\x09\x09printf(&\n&);\x09}\x09sort(a,12);\x09printf(&排序后:\n&);\x09for(i&=&0;&i&&&12;&++i)&{\x09\x09for(j&=&0;&j&&&2;&++j)\x09\x09\x09printf(&%4d&,a[i][j]);\x09\x09printf(&\n&);\x09}\x09return&0;}
还有没有更简单省事的方法?,因为像这样的话需要1秒多,计算量大。。。会超时。。
显示部分可以省去,这样会节省更多的时间。当然,若将排序函数融合在main()中,也会节省函数调用时间。#include&&stdio.h&&int&main()&{&&&&int&a[12][2]&=&{1,3,3,4,0,7,3,8,15,19,15,20,10,15,8,18,6,12,5,10,4,14,2,9};&&&&int&i,j,k,t,n&=&12;&&&&for(i&=&0;&i&&&n&-&1;&++i)&{&&&&&&&&k&=&i;&&&&&&&&for(j&=&i&+&1;&j&&&n;&++j)&{&&&&&&&&&&&&if(a[k][1]&&&a[j][1])&&&&&&&&&&&&&&&&k&=&j;&&&&&&&&}&&&&&&&&if(k&!=&i)&{&&&&&&&&&&&&for(j&=&0;&j&&&2;&++j)&{&&&&&&&&&&&&&&&&t&=&a[k][j];&&&&&&&&&&&&&&&&a[k][j]&=&a[i][j];&&&&&&&&&&&&&&&&a[i][j]&=&t;&&&&&&&&&&&&}&&&&&&&&}&&&&}&&&&return&0;}
还是直接问你题吧。。。。
为您推荐:
其他类似问题
扫描下载二维码}

我要回帖

更多关于 java二维数组排序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信