首頁 >後端開發 >php教程 >php多維數組自訂排序實例詳解

php多維數組自訂排序實例詳解

伊谢尔伦
伊谢尔伦原創
2017-06-26 13:08:451522瀏覽

今天遇到一個問題,是這樣的——給你源數據,排序好後寫入一個csv文件,原格式如下:

60177=tfido=Ifmail FidoNet 兼容邮寄服务
 60179=fido=FidoNet 电子邮件和新闻网络
 10082=amandaidx=Amanda 备份服务
 10083=amidxtape=Amanda 备份服务
 1178=skkserv=简单假名到汉字(SKK)日文输入服务器
 1313=xtel=法国 Minitel 文本信息系统
 15=netstat=网络状态(netstat)
 1529=support [prmsd, gnatsd]=GNATS 错误跟踪系统
 2=nbp=名称绑定协议
 2003=cfinger=GNU Finger 服务
 22289=wnn4_Cn=cWnn 中文输入系统
 22305=wnn4_Kr=kWnn 韩文输入系统
 22321=wnn4_Tw=tWnn 中文输入系统(台湾)
 2430=venus=用于 Coda 文件系统(codacon 端口)的 Venus 缓存管理器
 2430=venus=用于 Coda 文件系统(callback/wbc interface 界面)的 Venus 缓存管理器
 2431=venus-se=Venus 传输控制协议(TCP)的副作用
 2431=venus-se=Venus 用户数据报协议(UDP)的副作用
 2432=codasrv=Coda 文件系统服务器端口
 2433=codasrv-se=Coda 文件系统 TCP 副作用
 2433=codasrv-se=Coda 文件系统 UDP SFTP 副作用
 3128=squid=Squid 万维网代理缓存
 4=echo=AppleTalk Echo 协议
 4557=fax=FAX 传输服务(旧服务)
 4559=hylafax=HylaFAX 客户-服务器协议(新服务)
 465=smtps=通过安全套接字层的简单邮件传输协议(SMTPS)

我的方法是file函數讀入,然後foreach迴圈得到一個二維陣列

a7ee5fb7de96b8f11fab6aa1367f9a8d$value){
         $data[] = explode('=',$value);
 
     }
?>

這個二維陣列的格式就變成這樣:

<?php
array(
    [0]=>array([0]=>23,[1]=>Telnet,[2]=>&#39;远程。。&#39;)
    [1]=>array([0]=>2,[1]=>Telnet,[2]=>&#39;远程。。&#39;)
)
?>

想了想用PHP的函數進行排序,突然發現,這個是二維數組,PHP本身的排序大多是針對一維的,這是只好使用Usort函數自訂排序了。程式碼如下

<?PHP
 
     $file = file(&#39;4.txt&#39;);
     $data = array();
     foreach($file as $key=>$value){
         $data[] = explode(&#39;=&#39;,$value);
 
     }
     function arrSort($a,$b){
         if(!is_array($a)||!is_array($b)){
             echo $a,$b;
             die(&#39;出现非数组&#39;);
         }
         return ($a[0]>$b[0])?1:-1;
     }
     usort($data,&#39;arrSort&#39;);
     
 
 ?>

以上是php多維數組自訂排序實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn