php - 将目录名称和文件夹大小保存为二维数组
问题描述
我使用此代码在 HTML 表中打印子文件夹名称和大小,我想做的是将此表保存为二维数组,以便可以按文件夹大小排序(因为现在按字母名称顺序排序)
<?php
$directory = "F:/directory";
echo "<table>";
$depth = 0;
$count = 0;
$ritit = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST);
$r = array();
foreach ( $ritit as $splFileInfo ) {
$count +=1;
if ($ritit->getDepth() === $depth && $splFileInfo->isDir()) {
echo "<tr><td>".stripslashes($splFileInfo)."</td>";
echo "<td>".getSize($splFileInfo)."</td></tr>";
}
}
echo "</table>";
function getSize($dir, $precision = 2) {
$ritit = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS));
$bytes = 0;
foreach ( $ritit as $v ) {
$bytes += $v->getSize();
}
$bytes = max($bytes, 0);
return round($bytes, $precision) . ' ';
}
?>
解决方案
将文件名存储为键,将文件大小存储为 $r 2D-array 中的值。使用 sort 函数使用 value 对数组进行排序。
这是对数组进行排序的链接:https ://www.w3schools.com/php/php_arrays_sort.asp
<?php
$directory = "F:/directory";
echo "<table>";
$depth = 0;
$count = 0;
$ritit = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST);
$r = array();
foreach ( $ritit as $splFileInfo ) {
$count +=1;
if ($ritit->getDepth() === $depth && $splFileInfo->isDir()) {
// echo "<tr><td>".stripslashes($splFileInfo)."</td>";
// echo "<td>".getSize($splFileInfo)."</td></tr>";
$r[stripslashes($splFileInfo)] = getSize($splFileInfo);
}
}
// sort the associative array using the value.
asort($r);
foreach($r as $key => $value) {
echo "<tr><td>".$key."</td>";
echo "<td>".$value."</td></tr>";
}
echo "</table>";
function getSize($dir, $precision = 2) {
$ritit = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS));
$bytes = 0;
foreach ( $ritit as $v ) {
$bytes += $v->getSize();
}
$bytes = max($bytes, 0);
return round($bytes, $precision) . ' ';
}
?>
推荐阅读
- php - 如何在多个用户中动态选择数据库用户
- c# - 我的 FOR LOOP 是否正常工作,如果没有,如何解决?与计算机的砖比赛
- javascript - 如何将项目从数据库检索到控制器?
- java - 如何使用 HystrixCommandKey 从 Hystrix 获取超时配置
- android-studio - Android Studio 模拟器上的 GCP 文本转语音 API?
- c++ - 非局部非内联变量的初始化:它是否严格在 `main()` 函数调用之前进行?
- swift - 如何使用自动布局在一个宽度相同的 uitableviewcell 中设置八个 uilabel
- html - CSS:在 flex 布局中对齐项目
- nativescript - 自定义字体不适用于 Nativescript 空白模板
- symfony - Symfony3 onSecurityInteractiveLogin 注销并设置 flash