I encountered a problem today, it is like this - give you the source data, sort it and write it into a csv file. The original format is as follows:
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)
My method is to read in the file function, and thenforeachLoop to get a two-dimensional array:
<?PHP $file = file('4.txt'); $data = array(); foreach($file as $key=>$value){ $data[] = explode('=',$value); } ?>
The format of this two-dimensional array becomes like this:
<?php array( [0]=>array([0]=>23,[1]=>Telnet,[2]=>'远程。。') [1]=>array([0]=>2,[1]=>Telnet,[2]=>'远程。。') ) ?>
Think about using PHP functions After sorting, I suddenly discovered that this is a two-dimensional array. Most of PHP's own sorting is for one dimension. This is why I have to use the Usort function to customize the sorting. The code is as follows
<?PHP $file = file('4.txt'); $data = array(); foreach($file as $key=>$value){ $data[] = explode('=',$value); } function arrSort($a,$b){ if(!is_array($a)||!is_array($b)){ echo $a,$b; die('出现非数组'); } return ($a[0]>$b[0])?1:-1; } usort($data,'arrSort'); ?>
The above is the detailed content of Detailed explanation of PHP multi-dimensional array custom sorting example. For more information, please follow other related articles on the PHP Chinese website!