gpt4 book ai didi

php - 如何从文件(PHP)中对数组进行排序?

转载 作者:可可西里 更新时间:2023-11-01 00:53:51 24 4
gpt4 key购买 nike

我这里有一个文件,其中包含数据库名称列表及其相应的大小。现在我想把大小从大到小排序,还有数据库名显示时应该沿着它走。我在这里使用 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 - 如何从文件(PHP)中对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1243409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com