Php 在数组中存储DirectoryIterator(文件夹和文件)

Php 在数组中存储DirectoryIterator(文件夹和文件),php,arrays,Php,Arrays,我有这个foreach用于检索子目录和文件,然后将它们存储在数组中,我使用的是recursivedirectoryinterator,但我愿意使用任何其他可以解决我的问题的方法: $it = new RecursiveDirectoryIterator($path); foreach(new RecursiveIteratorIterator($it) as $file){ if ($file->getExtension() == 'jpg'){ $folder

我有这个foreach用于检索子目录和文件,然后将它们存储在数组中,我使用的是recursivedirectoryinterator,但我愿意使用任何其他可以解决我的问题的方法:

$it = new RecursiveDirectoryIterator($path);

foreach(new RecursiveIteratorIterator($it) as $file){
    if ($file->getExtension() == 'jpg'){

        $folder = ltrim($file->getPath(), $path."/");
        $images[] = array("cod" => $folder, "images" => $file->getFilename());

    }
}
输出为:

array(294) {
  [0]=>
  array(2) {
    ["cod"]=>
    string(5) "8322C"
    ["images"]=>
    string(36) "8322c-pastillas-del-sedona0-12-2.jpg"
  }
  [1]=>
  array(2) {
    ["cod"]=>
    string(5) "8322C"
    ["images"]=>
    string(36) "8322c-pastillas-del-sedona0-12-1.jpg"
  }
  [2]=>
  array(2) {
    ["cod"]=>
    string(5) "7877C"
    ["images"]=>
    string(29) "7877c-pastillas-4runner-2.jpg"
  }
  [3]=>
  array(2) {
    ["cod"]=>
    string(5) "7877C"
    ["images"]=>
    string(29) "7877c-pastillas-4runner-1.jpg"
  }
  [4]=>
  array(2) {
    ["cod"]=>
    string(9) "D889-7767"
    ["images"]=>
    string(30) "pastilla-spectra-rio-bex-1.jpg"
  }
  ...
所以我想要实现的是不重复变量cod(在本例中是目录),所以它看起来像:

array(294) {
  [0]=>
  array(2) {
    ["cod"]=>
    string(5) "8322C"
    ["images"]=>
    string(74) "8322c-pastillas-del-sedona0-12-1.jpg, 8322c-pastillas-del-sedona0-12-2.jpg"
  }
  [1]=>
  array(2) {
    ["cod"]=>
    string(5) "7877C"
    ["images"]=>
    string(60) "7877c-pastillas-4runner-1.jpg, 7877c-pastillas-4runner-2.jpg"
  }
  [3]=>
  array(2) {
    ["cod"]=>
    string(9) "D889-7767"
    ["images"]=>
    string(30) "pastilla-spectra-rio-bex-1.jpg"
  }
  ...
你能帮我吗?
这可能吗?

您可以首先检查元素是否重复,如果没有,则将其添加到数组中,否则在现有条目中添加新元素:

$index = findArrayInArray($images, "cod", $folder);
if($index >= 0)
    $images[$index]["images"] .= ", ".$file->getFilename());
else
    $images[] = array("cod" => $folder, "images" => $file->getFilename());
而不是

$images[] = array("cod" => $folder, "images" => $file->getFilename());
使用一个简单函数在数组中搜索数组(使用键和值):

函数findObjectInArray($arr、$key、$val){
对于($i=0;$i
您好,谢谢您的回复,我修复了代码中的一些拼写错误(额外的“)”和函数名),但抛出了以下错误:此行的偏移量类型非法:
$images[$index][$images]。=”,“$file->getFilename()$
,这应该可以。是的,我是这样做的:
$images[$index][“images”]。=“,”$file->getFilename()谢谢你的努力!我在这里找到了解决方案:
function findObjectInArray($arr, $key, $val){
    for($i = 0; $i < count($arr); $i++)
        if (isset($arr[$i][$key]) and $arr[$i][$key] == $val)
            return $arr[$i];
        return -1;
}