需要php从文件夹和子文件夹加载文件,然后对添加到数组中的结果进行排序
我需要搜索文件夹和子文件夹以搜索文件。在这个搜索中,我需要知道文件名及其路径,因为这些文件中有不同的文件夹和文件 我的名字是05 Navy,在这个文件夹中我有3个文件,分别是05_Navy_White_BaseColor.jpg、05_Navy_White_Normal.jpg和05_Navy_White_Occlusion RoughnessMetallic.jpg 我一次只需要得到其中一个,因为我需要将它们分别添加到不同的列表中 然后我想出了下面的代码:需要php从文件夹和子文件夹加载文件,然后对添加到数组中的结果进行排序,php,sorting,directory,Php,Sorting,Directory,我需要搜索文件夹和子文件夹以搜索文件。在这个搜索中,我需要知道文件名及其路径,因为这些文件中有不同的文件夹和文件 我的名字是05 Navy,在这个文件夹中我有3个文件,分别是05_Navy_White_BaseColor.jpg、05_Navy_White_Normal.jpg和05_Navy_White_Occlusion RoughnessMetallic.jpg 我一次只需要得到其中一个,因为我需要将它们分别添加到不同的列表中 然后我想出了下面的代码: function getDir
function getDirContents($dir, &$results = array()) {
$files = scandir($dir);
$findme = '_BaseColor';
$mypathCordas = null;
$findmeCordas = 'Cordas';
foreach ($files as $key => $value) {
$path = realpath($dir . DIRECTORY_SEPARATOR . $value);
$mypathCordas = $path;
$pos = strpos($mypathCordas, $findme);
$posCordas = strpos($mypathCordas, $findmeCordas);
if (!is_dir($path)) {
if($posCordas == true){
if($pos == true){
$results[] = $path;
}
}
}
else if ($value != "." && $value != ".." ) {
if($posCordas == true){
echo "</br>";
getDirContents($path, $results);
//$results[] = $path;
}
}
}
sort( $results );
for($i = 0; $i < count($results); $i++){
echo $results[$i];
echo "</br>";
}
return $results;
}
getDirContents('scenes/Texturas');
函数getDirContents($dir,&$results=array()){
$files=scandir($dir);
$findme='u BaseColor';
$mypathCordas=null;
$findmeCordas='Cordas';
foreach($key=>$value形式的文件){
$path=realpath($dir.DIRECTORY\u SEPARATOR.$value);
$mypathCordas=$path;
$pos=strpos($mypathCordas,$findme);
$posCordas=strpos($mypathCordas,$findRecordas);
如果(!is_dir($path)){
if($posCordas==true){
如果($pos==true){
$results[]=$path;
}
}
}
如果($value!=“&&&$value!=”),则为else{
if($posCordas==true){
回声“”;
getDirContents($path,$results);
//$results[]=$path;
}
}
}
排序(结果);
对于($i=0;$i还有,它获取所有路径,我已经尝试使用其他方法,但只得到了错误,我只需要场景/纹理/而不是绝对路径….您正在尝试所有子文件夹中的所有文件名及其完整路径?我认为,排序是另一个问题?您将需要递归(当您尝试时),或者,如果是迭代,您将需要一个“堆栈”。如果递归不是你的事情,那么这可以通过一个不断增长的“堆栈”为每个新的子目录迭代完成。我所说的“stack”只是指一个简单的字符串数组,其中包含每个遇到的文件夹的路径。你将在你的循环中遍历它。我将如何做到这一点@GetSet@oguzhancerit嗯,我可以只使用它们的名称和父文件夹,并使用一个变量来连接它们…我想如果您已经假设子文件夹只有1级嵌套深度,您可以这样做。您正在尝试所有子文件夹中的所有文件名及其完整路径?我认为,排序是另一个问题?您将需要递归(当您尝试时),或者,如果是迭代,您将需要一个“堆栈”。如果递归不是你的事情,那么这可以通过一个不断增长的“堆栈”为每个新的子目录迭代完成。我所说的“stack”只是指一个简单的字符串数组,其中包含每个遇到的文件夹的路径。你将在你的循环中遍历它。我将如何做到这一点@GetSet@oguzhancerit好吧,我可以只使用它们的名称和父文件夹,并使用一个变量来连接它们…我想如果您已经假设子文件夹只有1级嵌套深度,您可以这样做。