我有一个片段
$clusters = new DirectoryIterator("/agents/");
$cluster_array = array();
# Push each cluster into an array
foreach ($clusters as $fileinfo) {
if ($fileinfo != "." && $fileinfo != ".." && $fileinfo != "conf") {
array_push($cluster_array, $fileinfo->getFilename());
}
}这会将它找到的每个文件夹放到我的数组中,但我的问题是它总是在数组的开头推送结果。
array([0]=>cluster_2, [1]=>cluster_1)我想让它在数组的末尾按顺序推送文件夹。我尝试过array_pop,但我不确定如何在这种情况下使用它。
构建阵列后,我想扫描每个阵列,看看还剩下多少可用空间
foreach ($cluster_array as $cluster) {
echo $cluster . " " . Server::server_free_space("/agents/" . $cluster, 2)."<br />";
}这个类方法只使用disk_free_space(),然后为我将结果转换为MB。
为了代替echo语句,我打算这样做:
if ((Server::server_total_space("/agents/" . $cluster, 2) / 3) > xMB) {
}我想在数组中有xMB可用的第一个项中创建一个文件夹,如果xMB不可用,则移动到下一个数组项,依此类推,直到它找到一个具有创建新文件夹所需空间的数组项。
这有意义吗?
编辑:
我最终这样做了,有点像手动构建数组
$clusters = new DirectoryIterator("/agents/");
$cluster_array = array();
$cluster_count = 0;
# Push each cluster into an array
foreach ($clusters as $fileinfo) {
if ($fileinfo != "." && $fileinfo != ".." && $fileinfo != "conf") {
array_push($cluster_array, "cluster_" . $cluster_count += 1);
}
}发布于 2011-08-27 07:09:43
您正确地使用了array_push(),但是DirectoryIterator和相关迭代器会按照操作系统提供的方式迭代底层文件系统的项。这不一定是按照人们期望的方式排序的(例如,自然排序)。有关这方面的更多信息,请参阅此faux bug report。
https://stackoverflow.com/questions/7211334
复制相似问题