php+文件列表+排序列,如何从文件排序数组(PHP)?

标签:php

我这里有一个文件,其中包含数据库名称及其相应大小的列表.

现在,我要从最大到最小排序大小,以及数据库名称

应该在显示时进行.在这里使用PHP.

谁能帮我吗?

这是一个简单的代码:

$file_name = test.txt

$handle = @fopen($file_name, "r");

if ($handle) {

while (!feof($handle)) {

$buffer = fgets($handle, 4096);

$data = explode(" ",$buffer);

echo $data[1]."\n";

}

fclose($handle);

}

文件看起来像这样:

DatabaseName 300 KB

注意:$data [1]包含大小.我应该将其放置在阵列上吗?数据库名称怎么样?

非常感谢您的回答. =)

解决方法:

首先,您需要构建一个具有可以实际排序的元素的数组,然后使用usort或类似的元素根据您的自定义条件执行排序.

//first build up an array of databases with a unified size in bytes, ensuring

//we account for those postfixes like KB,MB,and GB

$databases=array();

while (!feof($handle)) {

$buffer = fgets($handle, 4096);

$data = explode(" ",$buffer);

if (count($data)==3)

{

$size=$data[1];

switch ($data[2])

{

case 'KB': $size*=1024; break;

case 'MB': $size*=1024*1024; break;

case 'GB': $size*=1024*1024*1024; break;

}

$data[3]=$size;

$databases[]=$data;

}

else

{

die("Bad line in file: $buffer");

}

}

现在使用自定义比较功能排序,以根据计算出的大小从高到低排序:

function cmp($a, $b)

{

if ($a[3] == $b[3]) {

return 0;

}

return ($a[3] < $b[3]) ? 1 : -1;

}

usort($databases, "cmp");

标签:php

来源: https://codeday.me/bug/20191024/1920507.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值