分享
 
 
 

php演绎(2)——数组的排序

王朝php·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

第二节 数组的排序

数组的排序是个让人很头痛的问题,光是各种名目的排序法就让人晕晕的了,不过它是如此的重要,以至于我们不能不重点讨论它。好在PHP已经提供了很多排序的函数,让你可以不去了解这些排序的细节。排序的原理和效率比较,我们会在后边的章节专门讨论。

PHP里最一般的排序函数是sort(),PHP手册里对它的描述如下:

Sort

(PHP 3, PHP 4 )

sort -- 对数组排序

说明

void sort ( array array [, int sort_flags])

本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。

使用sort()将把原有数组按照ASCII码从小到大顺序重新排列,注意sort()是直接对数组操作,并不返回任何值。现在,让我们回到麻将上:),majiangArray的数组元素是这样的:花色_点数.gif,我们需要进行的排序是这样的:先按照花色将maijiangArray数组排序,而每个花色内部,依照点数大小排序。显然,上边的sort()函数正好符合这一要求。我们只要在showArray之前sort()一下就OK了。

PHP CODE

// 在showArray之前sort()

sort( $user1 );

sort( $user2 );

sort( $user3 );

sort( $user4 );

showArray( $user1 );

showArray( $user2 );

showArray( $user3 );

showArray( $user4 );

程序运行的效果图如下:

上边的例子之所以能够得到解决是因为我们预先按sort()的习惯来组织了元素的内容,将主要排序标准——花色放在前边,而将次要排序标准——点数放在后边,而分割它们的都是一样的符号“_”。如果有元素为10_10.gif,那么现有的次序将被打乱;而且依靠重组元素名的方法来实现排序始终有些不方便。这说明单纯的排序实际上并不实用,因为我们通常都是依照数组元素的某一个特性对数组进行排序。在实际应用中,我们通过多维数组来存放有多个属性的数组元素。举个例子很常见的例子,我们使用user_info这个数组来存放访问者的信息,访问者id、访问者的IP、访问日期和时间、语言和引用页分别被保存在user_info[“id”],user_info[“ip”],user_info[“date”],user_info[“time”],user_info[“language”]和user_info[“reference”]里边。如果我们需要根据访问时间来对user_ info数组排序,sort()就英雄无用武之地了。幸运的是PHP中提供了一个用于多维数组排序的函数array_multisort(),它可以根据多维数组的某元素的一个属性对多维数组进行排序。下面我们通过程序来看看它的作用。

PHP CODE

<?php

/** ************************************************************

* 一个多维数组排序的例子

* @ Easy@bjpeu.edu.cn

* @ 2003-6-6

** *************************************************************/

// 显示函数,用表格的形式显示数组内容

function showUser( $userArray )

{

echo '<table border="1" cellpadding="0" cellspacing="5" style="border-collapse: collapse" bordercolor="#111111" width="100%" style="{ color: #000000; font-size: 9pt; font-family: Verdana }" >

<tr>

<td width="4%"><span lang="zh-cn">序号</span></td>

<td width="14%">IP</td>

<td width="17%"><span lang="zh-cn">日期</span></td>

<td width="16%"><span lang="zh-cn">时间</span></td>

<td width="14%"><span lang="zh-cn">语言</span></td>

<td width="35%"><span lang="zh-cn">引用页</span></td>

</tr>

';

for ( $i = 0 ; $i < count( $userArray["id"] ) ; $i++ )

{

echo '<tr>

<td width="4%">' . $userArray["id"][$i] . '</td>

<td width="14%">' . $userArray["ip"][$i] . '</td>

<td width="17%">' . $userArray["date"][$i] . '</td>

<td width="16%">' . $userArray["time"][$i] . '</td>

<td width="14%">' . $userArray["language"][$i] . '</td>

<td width="35%">' . $userArray["reference"][$i] . '</td>

</tr>

';

}

echo '</table>';

}

unset($user_info);

// 开始存储用户信息

// 第一个

$user_info["id"][] = 1;

$user_info["ip"][] = '202.204.203.7';

$user_info["date"][] = '06-07-2002';

$user_info["time"][] = '20:24';

$user_info["language"][] = 'zh-cn';

$user_info["reference"][] = 'http://exlc.soft.com/es5';

// 第二个

$user_info["id"][] = 2;

$user_info["ip"][] = '202.204.203.8';

$user_info["date"][] = '06-08-2002';

$user_info["time"][] = '04:32';

$user_info["language"][] = 'zh-cn';

$user_info["reference"][] = 'http://exlc.soft.com/es5';

// 第三个

$user_info["id"][] = 3;

$user_info["ip"][] = '202.204.203.9';

$user_info["date"][] = '06-09-2002';

$user_info["time"][] = '05:12';

$user_info["language"][] = 'zh-cn';

$user_info["reference"][] = 'http://exlc.soft.com/es5';

// 以时间为索引对数组排序

array_multisort (

$user_info["time"], SORT_STRING , SORT_ASC,

$user_info["id"],// 需要与时间保持关联的属性项写到后边

$user_info["ip"],

$user_info["date"],

$user_info["language"],

$user_info["reference"]

);

showUser( $user_info );//看看结果

?>

排序的结果如下:

多维数组是实现PHP文本数据库的重要手段,下一节我们将尝试编写一个class来封装对文本数据表的操作,当然,class内部使用多维数组来实现的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有