提问人:tropiciel 提问时间:11/8/2023 最后编辑:mickmackusatropiciel 更新时间:11/9/2023 访问量:61
对从其中下载的子目录名称进行排序 [重复]
Sort subdirectory names downloaded from within them [duplicate]
问:
这个问题在这里已经有答案了:
使用 PHP DirectoryIterator 列出和排序文件 (2 个答案)
带有natsort的PHP目录迭代器 (3 个答案)
使用 DirectoryIterator 对文件进行排序 (2 个答案)
12天前关闭。
我有一个目录,我对其子目录的名称进行排序。但这些是数字名称(植物识别号)。我希望显示植物名称而不是它们的 ID 号。在每个子目录中,我都有一个包含植物名称的 txt 文件。我把它显示在工厂ID号旁边的菜单中。但我想让植物名称(不是 ID!!)按升序排序。
带有植物名称的文件的标题>>“id plant_info_01c.txt <<
$taxon = ID Plant = 子目录的名称
工厂的名称 >> $file_info_01c_text <<是指向 iframe 的链接。
我想问一个最简单的解决方案,以便在发生辐射时由新手进行维修。如果需要数据库,它应该只在 txt 中。
<?php
$path = ".";
$dir = new DirectoryIterator($path);
foreach ($dir as $fileinfo) {
if ($fileinfo->isDir() && !$fileinfo->isDot()) {
$taxon = $fileinfo->getFilename();
$file_info_01c = $taxon.'/'.$taxon.'_info_01c.txt';
// wczytanie pliku 'info_01c.txt'
$file_info_01c_text = file_get_contents($file_info_01c);
echo $taxon.' <A href="index-if.php?taxon='.$taxon.'" target="ramka">'.$file_info_01c_text.'</A><br>';
}
}
?>
答:
0赞
dwsndev
11/8/2023
#1
将数据添加到数组中,并在回显链接之前对其进行排序。
$plants = [];
foreach (new DirectoryIterator(".") as $fileinfo) {
if ($fileinfo->isDir() && !$fileinfo->isDot()) {
$taxon = $fileinfo->getFilename();
$plants[] = [
'name' => file_get_contents("{$taxon}/{$taxon}_info_01c.txt"),
'taxon' => $taxon,
];
}
}
// Sort results by the file text
usort($plants, fn($a, $b) => $a['name'] <=> $b['name']);
// Create the links here instead
foreach ($plants as $plant) {
$name = $plant['name'];
$taxon = $plant['taxon'];
echo "{$taxon} <a href=\"index-if.php?taxon={$taxon}\" target=\"ramka\">{$name}</a><br>";
}
评论
0赞
mickmackusa
11/8/2023
这不是一个关联数组,它是一个包含关联行的索引数组。
0赞
mickmackusa
11/8/2023
在现代 PHP 应用程序中,使用箭头函数和 spaceship 运算符(如果不使用 )。这个答案也有太多的一次性变量声明,可以进一步完善。array_multisort()
0赞
dwsndev
11/9/2023
更新了建议。
评论
"$x.{$y}_z"
$x.'.'.$y.'_z'