将多于1个项添加到PHP数组并迭代它

时间:2012-01-11 15:40:17

标签: php

下面是我正在处理的文件迭代,它迭代文件夹并收集所有图像,它将每个图像的文件路径保存到$files array,然后代码必须迭代{{1} }

现在我正在处理的代码实际上通过imagemagick感知了一个文件3次(我没有写原始代码)所以我正在尝试改进整个代码,到目前为止我已经将其减少到2倍完成后,每张图片只有1次。

基本上当前的代码通过imagemagick运行一个图像,看它是不是图像,稍后它会再次执行,但这次是为了获得图像扩展,然后第3次是确保它是图像再次(我知道人们编写的代码非常糟糕)

所以要将它减少到1次,当$files array第一次通过imagemagick运行图像文件以确保它是图像时,我现在有了该函数返回文件扩展名而不是简单的真/假。因此,当文件路径保存到数组时,我想将返回的文件扩展名保存到具有该特定文件路径的数组中,以便稍后可以访问它而无需再次运行imagemagick。

所以这里是循环文件夹抓取所有图像文件然后将它们发送到imagemagick的功能。然后它将文件路径保存到数组,有人可以告诉我如何将文件扩展名保存到此数组,然后如何在函数下面的代码中访问它

$files array

然后我就这样访问这个数组......

function find_recursive_images($path)
{
    $directory = new RecursiveDirectoryIterator($path,RecursiveDirectoryIterator::SKIP_DOTS);
    $iterator = new RecursiveIteratorIterator($directory,RecursiveIteratorIterator::LEAVES_ONLY);
    $exntensions = array("png", "jpg", "jpeg", "gif", "bmp");

    foreach ($iterator as $fileinfo) {
        if (in_array($fileinfo->getExtension(), $exntensions)) {
            //This gets the filetype of the image from ImageMagick
            $img = self::get_type($fileinfo->getPathname());
            if ($img) {
                //This sets the full file path to the $files array
                $files[] = $fileinfo->getPathname();

                // I tried something like this but not correct
                $files[][] = $img;
            }
        }
    }
    return $files;
}

1 个答案:

答案 0 :(得分:1)

你如何为每个图像使用关联数组?试试这个: 要构建您的数组: $files[] = array(location => $fileinfo->getPathname(), type => $img);

循环你的aray:

foreach ($files as $file) {    
     $source_file = $file->location;  
     $extension  = $file->type;

     //do some stuff using your info
}