【问题标题】:How do you organize files that are being echo'd from a directory?您如何组织从目录中回显的文件?
【发布时间】:2013-07-11 23:03:56
【问题描述】:

我已将此代码设置为在目录中显示文件(如果它们是歌曲)。他们被放入一个不按任何顺序组织的列表中。我想按文件名组织这些歌曲。如果我查看我的 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);
    }
?>

【问题讨论】:

    标签: php file list directory reorganize


    【解决方案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;
    

    或同等的

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

    【讨论】:

    • 由于某种原因它没有进入数组()。它会列出所有歌曲,但它们都以 0 键出现。我不确定我是否做得正确。
    • 我发布的代码是我目前所拥有的。如何将$newentry 放入一个数组并对该数组进行排序?
    • 哦,甜蜜的交易。有用!对于 foreach 回声,我不得不将 item 更改为 song,但是经过细微调整后,它起作用了!非常感谢你!!我所有的用户都会喜欢这个。
    猜你喜欢
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多