通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 my小屋
联系我们
设为首页
加入收藏

 

qq,asp,php,jsp,xml,sql,.net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>在线服务>>疑难解答>>正文 新版上线![旧版]
注:打开慢时请稍等

怎么给多维数组排序?

http://www.iyit.net  日期:2006-10-6 15:36:38  来源:iyit.net收集  点击:
参加讨论
汗,对数组操作太弱了,资料到处翻,还是只有一维数组的方便排序方法,却找不到二维的.  
matlab用久了才知道php对数的操作很弱.-_-!!  
 
一个二维数组:  
 
           $aclass[0]["acid"]  =  1;  
           $aclass[0]["acorder"]  =  3;  
           $aclass[0]["acname"]  =  "入门指南";  
           $aclass[0]["acinfo"]  =  "php基础知识";  
 
           $aclass[1]["acid"]  =  2;  
           $aclass[1]["acorder"]  =  1;  
           $aclass[1]["acname"]  =  "应用技巧";  
           $aclass[1]["acinfo"]  =  "php编程技巧总结";  
 
           $aclass[2]["acid"]  =  3;  
           $aclass[2]["acorder"]  =  2;  
           $aclass[2]["acname"]  =  "高级应用";  
           $aclass[2]["acinfo"]  =  "php程序的高级应用";  
 
问题一:  问题很简单,怎么按照acorder升序和降序来排列这几个数组,值不变索引不变.  
print_r的结果应该是:  
 
array  
(  
 
       [0]  =>  array  
               (  
                       [acid]  =>  2  
                       [acorder]  =>  1  
                       [acname]  =>  应用技巧  
                       [acinfo]  =>  php编程技巧总结  
               )  
 
       [1]  =>  array  
               (  
                       [acid]  =>  3  
                       [acorder]  =>  2  
                       [acname]  =>  高级应用  
                       [acinfo]  =>  php程序的高级应用  
               )  
 
       [2]  =>  array  
               (  
                       [acid]  =>  1  
                       [acorder]  =>  3  
                       [acname]  =>  入门指南  
                       [acinfo]  =>  php基础知识  
               )  
}  
有没有其它详细的排序方案?自定义的多维数组排序怎么做?给个资料参考也行,我喜欢自己看书理解.  
 
问题二:  如何取得[acid]  =>  1的那个数组的全部或部分元素?比如我要取得[acid]  =>  1的那个数组[acname]  索引所指向的值,怎么做简单效率高?  
 
两个问题100分,晚上回来结帖子,郁闷,今天访问老出错.可用分竟然不增加,昏死.  
---------------------------------------------------------------  
 
<?php  
$aclass[0]["acid"]  =  1;  
$aclass[0]["acorder"]  =  3;  
$aclass[0]["acname"]  =  "入门指南";  
$aclass[0]["acinfo"]  =  "php基础知识";  
 
$aclass[1]["acid"]  =  2;  
$aclass[1]["acorder"]  =  1;  
$aclass[1]["acname"]  =  "应用技巧";  
$aclass[1]["acinfo"]  =  "php编程技巧总结";  
 
$aclass[2]["acid"]  =  3;  
$aclass[2]["acorder"]  =  2;  
$aclass[2]["acname"]  =  "高级应用";  
$aclass[2]["acinfo"]  =  "php程序的高级应用";  
 
//升序  
$asc_func  =  create_function('$a,$b','  
$k  =  "acorder";  
if($a[$k]  ==  $b[$k])  return  0;  
return  $a[$k]>$b[$k]?1:-1;  
');  
usort($aclass,$asc_func);  
print_r($aclass);  
 
//  降序  
$desc_func  =  create_function('$a,$b','  
$k  =  "acorder";  
if($a[$k]  ==  $b[$k])  return  0;  
return  $a[$k]>$b[$k]?-1:1;  
');  
usort($aclass,$desc_func);  
print_r($aclass);  
?>  
array  
(  
       [0]  =>  array  
               (  
                       [acid]  =>  2  
                       [acorder]  =>  1  
                       [acname]  =>  应用技巧  
                       [acinfo]  =>  php编程技巧总结  
               )  
 
       [1]  =>  array  
               (  
                       [acid]  =>  3  
                       [acorder]  =>  2  
                       [acname]  =>  高级应用  
                       [acinfo]  =>  php程序的高级应用  
               )  
 
       [2]  =>  array  
               (  
                       [acid]  =>  1  
                       [acorder]  =>  3  
                       [acname]  =>  入门指南  
                       [acinfo]  =>  php基础知识  
               )  
 
)  
array  
(  
       [0]  =>  array  
               (  
                       [acid]  =>  1  
                       [acorder]  =>  3  
                       [acname]  =>  入门指南  
                       [acinfo]  =>  php基础知识  
               )  
 
       [1]  =>  array  
               (  
                       [acid]  =>  3  
                       [acorder]  =>  2  
                       [acname]  =>  高级应用  
                       [acinfo]  =>  php程序的高级应用  
               )  
 
       [2]  =>  array  
               (  
                       [acid]  =>  2  
                       [acorder]  =>  1  
                       [acname]  =>  应用技巧  
                       [acinfo]  =>  php编程技巧总结  
               )  
 
)  
 
---------------------------------------------------------------  
 
array_multisort  
(php  4  )  
 
array_multisort  --  对多个数组或多维数组进行排序  
说明  
bool  array_multisort  (  array  ar1  [,  mixed  arg  [,  mixed  ...  [,  array  ...]]])  
 
 
array_multisort()  可以用来一次对多个数组进行排序或者根据某一维对多维数组进行排序。排序时保留原有的键名关联。    
 
输入数组被当成一个表的列并以行来排序  -  这类似于  sql  的  order  by  子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。    
 
本函数的参数结构有些不同寻常,但是非常灵活。第一个参数必须是一个数组。接下来的每个参数可以是数组或者是下面列出的排序标志。    
 
排序顺序标志:    
 
 
sort_asc  -  按照上升顺序排序  
 
sort_desc  -  按照下降顺序排序  
 
 
排序类型标志:    
 
 
sort_regular  -  将项目按照通常方法比较  
 
sort_numeric  -  将项目按照数值比较  
 
sort_string  -  将项目按照字符串比较  
 
 
每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效  -  在此之前为默认值  sort_asc  和  sort_regular。    
 
如果成功则返回  true,失败则返回  false。    
 
例子  1.  对多个数组排序  
 
$ar1  =  array  ("10",  100,  100,  "a");  
$ar2  =  array  (1,  3,  "2",  1);  
array_multisort  ($ar1,  $ar2);  
   
   
 
 
本例中经过排序后,第一个数组将包含  10,"a",100,100。第二个数组将包含  1,1,"2",3。第二个数组中的项目顺序完全和第一个数组中相应的项目(100  和  100)顺序一致。    
 
例子  2.  对多维数组排序  
 
$ar  =  array  (array  ("10",  100,  100,  "a"),  array  (1,  3,  "2",  1));  
array_multisort  ($ar[0],  sort_asc,  sort_string,  
                                 $ar[1],  sort_numeric,  sort_desc);  
   
   
 
 
本例中经过排序后,第一个数组将包含  10,100,100,"a"(作为字符串上升排序),第二个数组将包含  1,3,"2",1(作为数值下降排序)。    
 
【译者注】本函数相当有用,为有助于理解,请看下面这个例子:    
 
例子  3.  名次排列  
 
$grade  =  array("score"  =>  array(70,  95,  70.0,  60,  "70"),  
                             "name"  =>  array("zhang  san",  "li  si",  "wang  wu",  
                                                             "zhao  liu",  "liu  qi"));  
array_multisort($grade["score"],  sort_numeric,  sort_desc,  
                               //  将分数作为数值,由高到低排序  
                               $grade["name"],  sort_string,  sort_asc);  
                               //  将名字作为字符串,由小到大排序  
var_dump($grade);  
   
 
上例输出结果如下:  array(2)  {  
   ["score"]=>  
   array(5)  {  
       [0]=>  
       int(95)  
       [1]=>  
       string(2)  "70"  
       [2]=>  
       float(70)  
       [3]=>  
       int(70)  
       [4]=>  
       int(60)  
   }  
   ["name"]=>  
   array(5)  {  
       [0]=>  
       string(5)  "li  si"  
       [1]=>  
       string(6)  "liu  qi"  
       [2]=>  
       string(7)  "wang  wu"  
       [3]=>  
       string(9)  "zhang  san"  
       [4]=>  
       string(8)  "zhao  liu"  
   }  
}  
   
本例中对包含成绩的数组  $grade  按照分数(score)由高到低进行排序,分数相同的人则按照名字(name)由小到大排序。排序后李四  95  分为第一名,赵六  60  分为第五名没有异议。张三、王五和刘七都是  70  分,他们的名次则由其姓名的字母顺序排列,liu  在前,wang  在后而  zhang  在最后。为了区别,三个  70  分分别用了整数,浮点数和字符串来表示,可以在程序输出中清楚地看到它们排序的结果。    
   
 
 
---------------------------------------------------------------  
 
up学习、  
---------------------------------------------------------------  
 
好东西,收藏

编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:用gd图形库写了个验证码,可是(急。。。)
下一篇:讨论:几个效率等问题和众兄弟探讨
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
最新更新 热点排行 推荐新闻
我在windows  xp上安装apache2.044+ph
apache+php,怎样打开session支持??
在linux中怎么配置pdflib和php  高分!
怎么样同时解释.php和.php3的文件呀,
php 4.1.0 及以后版本使用post变量的接
我的qq被盗走的原因分析
webqq好玩不?大鸟带你一起体验
奇奇怪怪的qq密技十五招
qq被盗到出售过程详解
微软winxp sp3再次跳票 推至08年发布
google苹果合作浏览器 防恶意网站
微软操作系统实现开源?
网管应当如何管理windows操作系统?
让windows xp系统锁定期间拒绝关机
windowsvista中文版11月30日正式发布
我在windows  xp上安装apache2.044+ph
php 在linux 下如何開啟ftp功能
apache2-win32+php的成功安装方法
怎么删除mysql???
apache+php,怎样打开session支持??
合并vcd片断、快速删除文件夹--dos命令
dos教程 dos命令基础应用
破解qq密码如此简单 
低格、分区、高格的应对--dos命令应用
一劳永逸--批处理命令(一)
qq2006 beta3隆重发布 实用功能一一奉
美国微软总部相中重庆15岁网络奇才(图
qq号码激活的常见问题及案例分析 
sql server安装文件挂起错误解决办法
三分钟让你的系统变处女:acronis tru
exeplorer.exe错误的问题的总结、解决
我的qq被盗走的原因分析
webqq好玩不?大鸟带你一起体验
奇奇怪怪的qq密技十五招
qq被盗到出售过程详解
google苹果合作浏览器 防恶意网站
网管应当如何管理windows操作系统?
让windows xp系统锁定期间拒绝关机
windowsvista中文版11月30日正式发布
google优化网站管理员指导方针
hilltop算法- 探索google排名新算法

设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights © 2004-2006 iyit.net all rights reserved.
网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息