background image

人为命名为

sort,sort 对应值如下:

data1'skey|data2'skey|data3'skey|........|datan'skey
其中

datan'sdey 的长度需要一定(笔者使用的是时间方法,如下程序可以生成 key:)

----------------------------------------------------
functiongetkey(){
$date=date("ymdHis");
return$date;
}
----------------------------------------------------
这样用

getkey()可以得到一个类似 001203114950 的 12 位 key,而每个 key 就对应它自己的

(在这里用户的电话);而用 substr($sort,$i*13,12)就可以读出第 i 个用户的 key,下面是显

示列表的代码:
----------------------------------------------------
<?
//首先要知道有多少个用户,可以专门开一个 num 来记录
$data=dbmopen("path","r");//打开数据库
$sort=dbmfetch($data,"sort");//读取 sort
for($i=0;$i<$totaluser;$i ){
$key=substr($sort,$i*13,12);//安顺序取得 key
$telno=dbmfetch($data,$key);//读出 key 对应的 value
echo$i 1."User'sTelNOis".$telno."<br>";
}
dbmclose($data);
?>
----------------------------------------------------

2、数组排序法:在这里感谢无伤兄,是他让笔者想起用数组来排序的。数组排序的基本原理
是将整个

DBM 数据库的每条 key 读入数组,然后根据每个 key 的大小使用 usort()等函数排

序然后输出。
因为是对

key 的大小排序,所以 key 的长度没有什么限制,只要保证后加入的 key 大于先加

入的

key 就可以实现先显示后加入的人,这里用 time()来作为 key。

下面是列表代码:
----------------------------------------------------
$data=dbmopen("path","r");//打开数据库
$i=1;
for($key=dbmfirstkey($data);$key;$key=dbmnextkey($data,$key)){
$sort[$i]=$key;
$i ;
}//遍历取得所有的 key
usort($sort);//安大小排序
for($i=0;$i<count($sort);$i )
echo$i 1."User'sTelNOis".dbmfetch($data,$sort[$i])."<br>";
dbmclose($data);
----------------------------------------------------