简体   繁体   English

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

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

Hello everybody, 大家好,

I would like to scan the content of 2 different folders and show the result in 1 list/array. 我想扫描2个不同文件夹的内容,并以1个列表/数组显示结果。 How is that possible? 那怎么可能?

This script works fine for 1 folder: 此脚本适用于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
        };
    };
?> 

I would like to realize something like this: 我想意识到这样的事情:

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

Thank you for your support! 谢谢您的支持!
Thomas 托马斯

Simple trick: 简单技巧:

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

Function just merge two arrays (result of first and second folder) and output one array. 函数仅合并两个数组(第一个和第二个文件夹的结果)并输出一个数组。 Since scandir() output an basic array (numeric keys), no data will be lost. 由于scandir()输出基本数组(数字键),因此不会丢失任何数据。

EDIT 编辑

I forgot about directory name in output's array. 我忘记了输出数组中的目录名称。 Now it's more complicated. 现在更复杂了。 There we can use another trick: 在那里,我们可以使用另一个技巧:

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;
    });
}

Now, you should have one array with files and directories from two different directories. 现在,您应该拥有一个数组,其中包含来自两个不同目录的文件和目录。

Try to use an array : 尝试使用数组:

<?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>';
        }
    }
?> 

Hope this helps. 希望这可以帮助。

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

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