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