Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从目录和子目录获取数组中的所有图像_Javascript_Php - Fatal编程技术网

Javascript 从目录和子目录获取数组中的所有图像

Javascript 从目录和子目录获取数组中的所有图像,javascript,php,Javascript,Php,目前,我有类似于以下树结构: +images +sub-directory -image1.jpg -image2.jpg +sub-directory-2 -image3.jpg -image4.jpg -some-image.jpg -another.jpg 那么这个呢: <script> <?php $directory = "images/*/"; $images = gl

目前,我有类似于以下树结构:

+images
    +sub-directory
       -image1.jpg
       -image2.jpg
    +sub-directory-2
       -image3.jpg
       -image4.jpg
    -some-image.jpg
    -another.jpg

那么这个呢:

<script>

<?php

$directory = "images/*/";

$images = glob("" . $directory . "*.jpg");

echo "var allImages = ['".implode("', '", $images)."'];\n";

?>

console.log(allImages);

</script>

我喜欢,保持事物的美好和简单:

<?php
$images = glob("images/*/*.jpg");
$imgs = array();
foreach($images as $image){ $imgs[] = $image; }
?>
<script>
    var allImages = JSON.parse('<?php echo json_encode($imgs);?>');
    console.log( allImages);
</script>

递归函数怎么样

function loadImages($folder)
{
    $files = glob($folder);
    foreach( $files as $file )
    {
        if(is_dir($file))
        {
            loadImages($file);
        } else {
            $images[] = $file; // add some file type validation here
        }
    }

    return $images;
}

$images = json_encode(loadImages($startFolderPath));

我在iPad上,所以无法测试它。

子目录有多深?我这样问是因为如果它们不是很深,那么在php glob手册页面上有几个递归glob函数。如果它相当深,那么可以考虑使用exec和find,这可能会给您带来更快的结果。@JonathanKuhn目前我没有更深的子目录,可以使用它。工作正常!另外,我需要得到一些图片,比如图片目录中的some-image.jpg。目前,它可以获取所有子目录图像。您不使用json_encode有什么原因吗?json就是最好的选择,我只是指定了所需的解决方案。我可以这样使用:
$directory=“images,images/*/”我不确定我是否对glob()函数了解得那么好,您可以在这里阅读更多关于它的内容:我将它修改得更像您的代码。这使用了与您相同的变量,应该可以工作。SyntaxError:missing)在参数列表var allImages=JSON.parse(“[“images\/ads\/ad-img-1.jpg”,“images\/ads\/ad special…”后,我切换为单引号。我认为您的数组可能不是您想要的,而是使用
print\r()
您可以检查PHP数组以查看JS版本的外观。Likow工作正常,但无法获得父目录图像,如我的问题中的some-image.jpg。使用glob中的regex返回[]
<?php
$images = glob("images/*/*.jpg");
$imgs = array();
foreach($images as $image){ $imgs[] = $image; }
?>
<script>
    var allImages = JSON.parse('<?php echo json_encode($imgs);?>');
    console.log( allImages);
</script>
$images = glob("~(?:images/*/)*\.jpg~");
function loadImages($folder)
{
    $files = glob($folder);
    foreach( $files as $file )
    {
        if(is_dir($file))
        {
            loadImages($file);
        } else {
            $images[] = $file; // add some file type validation here
        }
    }

    return $images;
}

$images = json_encode(loadImages($startFolderPath));