Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.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
向PHP数组中添加一个以上的项并对其进行迭代_Php - Fatal编程技术网

向PHP数组中添加一个以上的项并对其进行迭代

向PHP数组中添加一个以上的项并对其进行迭代,php,Php,下面是我正在使用的一个文件iterarot函数,它迭代文件夹并收集所有图像,它将每个图像的文件路径保存到$files数组,然后代码必须迭代该$files数组 现在,我正在编写的代码实际上通过imagemagick感测了一个文件3次(我没有编写原始代码),因此我正在尝试改进整个代码,到目前为止,我已将其减少到2次,完成后,每个图像只需1次 基本上,当前的代码通过imagemagick运行一个图像来查看它是否是图像,稍后它会再次运行,但这次是为了获得图像扩展,然后第三次是为了确保它再次是图像(我知道

下面是我正在使用的一个文件iterarot函数,它迭代文件夹并收集所有图像,它将每个图像的文件路径保存到
$files数组
,然后代码必须迭代该
$files数组

现在,我正在编写的代码实际上通过imagemagick感测了一个文件3次(我没有编写原始代码),因此我正在尝试改进整个代码,到目前为止,我已将其减少到2次,完成后,每个图像只需1次

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

因此,为了将其减少到1倍,当
$files数组第一次通过imagemagick运行图像文件以确保它是图像时,我现在使用该函数返回文件扩展名,而不是简单的true/false。因此,当文件路径保存到阵列时,我希望将返回的文件扩展名保存到具有该特定文件路径的阵列,以便以后无需再次运行imagemagick即可访问它

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

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;
}
然后我现在就这样访问阵列

foreach ($files as $file)
{    
     // ie E:\Server\_ImageOptimize\img\testfiles\css3-please.png
     $source_file = $file;  

    // $file also needs to return a filetype that is got when it ran thorugh imagemagick

}

对每个图像使用关联数组怎么样?试试这个: 要构建阵列,请执行以下操作:
$files[]=array(位置=>$fileinfo->getPathname(),类型=>$img)

要循环浏览您的aray:

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

     //do some stuff using your info
}

你能举一个例子来说明你希望数组通过循环后的样子吗?这里有身份危机吗?;)@jprofitt每个帐户的问题都有一个限制,你只需要给你一个困难的时间就可以了:
foreach($key=>$val){echo“key=”..$key。“value=”..$val;}
ah是的,谢谢你,我会在2分钟内接受它