【问题标题】:How to scan directory and save only image file names to array with php?如何使用php扫描目录并仅将图像文件名保存到数组中?
【发布时间】:2013-12-20 21:22:43
【问题描述】:

我正在编写一个扫描特定目录并将每个图像文件名保存到数组的脚本。问题是,我的目录中也有两个 txt 文件。我只想要数组中的图像文件名,我需要排除txt文件。因此,我不能使用scandir。这是我目前所拥有的:

$images = glob($post_dir . "{*.jpg}", GLOB_BRACE);
$listImages=array();
foreach($images as $image){
    $listImages[]=$image;
}

foreach ($listImages as $singleImg) {
    echo $singleImg;
}

我认为问题实际上可能在于设置 $images 变量。在第一个 foreach 中,如果做 echo $image; 我没有得到任何回报。

编辑:另外,如果有更好的方法来完成我想要完成的工作,请随时分享。我不打算只使用 glob。

【问题讨论】:

  • $listImages=$image 应该是 $listImages[]=$image; ....这不会帮助 $images 为空,但实际上会导致 $listImages 中的数组。

标签: php arrays glob


【解决方案1】:

我认为glob 你可以这样做:

$post_dir = 'giraffe-images/';
$images = glob($post_dir . '*.jpg');
foreach($images as $image){
  echo $image;
}

至于您的情况,$listImages 在第一个 foreach 循环之后不是数组,因为您正在这样做:

$listImages = $image;

我认为你的意思是:

$listImages[] = $image;

【讨论】:

  • 感谢比尔的帮助,不过我不太确定您的建议。以您的示例为例,它看起来就像我所拥有的,除了我将目录路径保存到 $post_dir 并在其中写出它。好吧,您还取出了 GLOB_BRACE。我确实尝试过,但没有帮助。
  • 没问题!好吧,我只是让您知道不需要构建 $listImages 数组的数组,因为 $images 不仅仅是图像数组。
  • 哦,好的,我现在明白了,谢谢!所以,你绝对是正确的,我的问题只不过是一个简单的错误。我的目录中没有正斜杠:/您编辑的答案让我意识到这一点。
【解决方案2】:

我会说添加echo $post_dir; 让你有一个斜线并且你有正确的目录。

我写了这个测试:

<?php
$post_dir = "/tmp/20712147/subdir/";
$images = glob($post_dir . "*.jpg");
$listImages=array();
foreach($images as $image){
    $listImages[]=$image;
}

print_r($listImages);

用法:

matt@goliath:/tmp/20712147$ ls
glob.php subdir
matt@goliath:/tmp/20712147$ ls subdir/
readme.txt test1.jpg  test2.jpg
matt@goliath:/tmp/20712147$ php glob.php 
Array
(
    [0] => /tmp/20712147/subdir/test1.jpg
    [1] => /tmp/20712147/subdir/test2.jpg
)

【讨论】:

    猜你喜欢
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 2022-01-16
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2021-08-27
    相关资源
    最近更新 更多