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