繁体   English   中英

scandir()-> 2个文件夹->显示1个结果

[英]scandir() -> 2 folders -> show 1 result

大家好,

我想扫描2个不同文件夹的内容,并以1个列表/数组显示结果。 那怎么可能?

此脚本适用于1个文件夹:

<?php
    $ordner = "images/";
    $alledateien = scandir($ordner);

    foreach ($alledateien as $datei) {
        $dateiinfo = pathinfo($ordner."/".$datei); 
        $size = ceil(filesize($ordner."/".$datei)/1024); 

        if ($datei != "." && $datei != ".."  && $datei != ".DS_Store") 
        { 
?>
            <?php echo $dateiinfo['filename']; ?><br>
<?php
        };
    };
?> 

我想意识到这样的事情:

<?php
$ordner = "images/" AND "pdf/";
...

谢谢您的支持!
托马斯

简单技巧:

function getScanDir($firstFolder, $secondFolder)
{
    return array_merge(
        scandir($firstFolder),
        scandir($secondFolder)
    );
}

函数仅合并两个数组(第一个和第二个文件夹的结果)并输出一个数组。 由于scandir()输出基本数组(数字键),因此不会丢失任何数据。

编辑

我忘记了输出数组中的目录名称。 现在更复杂了。 在那里,我们可以使用另一个技巧:

function getScanDir($firstFolder, $secondFolder)
{
    return array_merge(
        createArrayDirectory($firstFolder),
        createArrayDirectory($secondFolder)
    );
}

function createArrayDirectory($folderName)
{
    return array_filter(scandir($folderName), function(&$value) use ($folderName) {
        return $folderName . '/' . $value;
    });
}

现在,您应该拥有一个数组,其中包含来自两个不同目录的文件和目录。

尝试使用数组:

<?php
    $ordners = ["images/", "pdf/"];

    foreach ($ordner as $order)
    {
        $alledateien = scandir($ordner);

        foreach ($alledateien as $datei) 
        {
            $dateiinfo = pathinfo($ordner."/".$datei); 
            $size = ceil(filesize($ordner."/".$datei)/1024); 

            if ($datei != "." && $datei != ".."  && $datei != ".DS_Store") 
                echo $dateiinfo['filename'].'<br>';
        }
    }
?> 

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM