如何组织从目录回显的文件?

时间:2013-07-11 23:03:57

标签: php file list directory reorganize

我将此代码设置为在目录中显示文件(如果它们是歌曲)。它们被放入一个不按任何顺序组织的列表中。我想用他们的文件名来组织这些歌曲。如果我查看我的FileZilla,他们的文件按文件的名称组织就好了。

示例:

  • 01 - 歌曲标题
  • 02 - 歌曲标题
  • 03 - 歌曲标题

歌曲不会保存在任何数据库中。我已经尝试将歌曲放入数组并使用sort(),但只能反复输出单词“Array”。我可能做错了。

您可以在此处查看如何随机发布这些内容的示例:http://mixtapemonkey.com/mixtape?m=637

<?php
    $mixtapeid = $_GET['m'];
    $tb_name="mixtapes";

    $data = mysql_query("SELECT * FROM $tb_name WHERE id='$mixtapeid'") or die(mysql_error());
    $info = mysql_fetch_array($data);

    if ($handle = opendir("mixtapes/zip/".$info['id'])) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "mixtapes/zip/".$info['id'] && $entry != "mixtapes/zip/".$info['id']) {   
                $item = "mixtapes/zip/".$info['id']."/".$entry."/";

                    if ($newhandle = opendir("mixtapes/zip/".$info['id']."/".$entry)) {
                        while (false !== ($newentry = readdir($newhandle))) {
                            if ($newentry != "mixtapes/zip/".$info['id']."/".$entry && $newentry != "mixtapes/zip/".$info['id']."/".$entry) {

                               $ext = substr($newentry, strrpos($newentry, '.') + 1);
                               if ($ext == "mp3" || $ext == "m4a")
                               {
                                    echo    "<li><a href='$item$newentry'>".basename($newentry, '.mp3')."</a></li>";
                               }
                            }
                        }
                        closedir($newhandle);
                    }

            }
        }
        closedir($handle);
    }
?>

1 个答案:

答案 0 :(得分:1)

您可能希望将歌曲添加到数组中,然后调用sort()http://php.net/manual/en/function.sort.php)函数。

更改

if ($ext == "mp3" || $ext == "m4a")
{
    echo    "<li><a href='$item$newentry'>".basename($newentry, '.mp3')."</a></li>";
}

if ($ext == "mp3" || $ext == "m4a")
{
    $musicarray[] = basename($newentry, '.mp3');
}

然后在你的代码中,你可以对这个mucis数组进行排序

sort($musicarray);

如果您收到有关未定义数组的错误,则可能需要添加

$musicarray = Array();

代码中的某个地方。

这只会创建数组而不会显示它。要打印数组,在巨型循环之后,您需要从数组中回显出evrey键,如

foreach ($musicarray as $item)
    echo $item;

或同等的

这是未经测试的,所以可能需要一些摆弄才能正常工作。