Пожалуйста, дайте мне решение для получения имени каталогов, которое не содержит файл «input…», используя php. Моя структура папок выглядит так:
Main Dir
namedirectory.php
Dir1
File1
input_1.txt
File
Dir2
File5
File6
Dir3
File1
input_2.txt
Dir4
File1
File2
Dir5
File1
File2
Поскольку Dir1 и Dir3 имеют файлы «input ..», поэтому он получит name = dir2, dir4, dir5. У меня есть код, но он не работает. Пожалуйста, помогите мне исправить это!
<?php
$dir ='/directory';
while($dirs = glob($dir . '/*', GLOB_ONLYDIR)) {
$dir .= '/*';
if(!$d) {
$d=$dirs;
} else {
$d=array_merge($d,$dirs);
}
foreach ($d as $d) {
if ($handle = opendir($d)) {
while ($entry = readdir($handle)) {
if (strpos($entry, "input") === FALSE) {
echo $d;
break;
}
}
closedir($handle);
}
}
}
?>
Используйте tripple =, потому что PHP будет разыгрывать false
до 0, который будет правдой.
Изменить:
if (strpos($entry, "input") == FALSE) {
В
if (strpos($entry, "input") === FALSE) {
РЕДАКТИРОВАТЬ
$dir ='/directory';
while($dirs = glob($dir . '/*', GLOB_ONLYDIR)) {
$dir .= '/*';
if(!$d) {
$d=$dirs;
} else {
$d=array_merge($d,$dirs);
}
foreach ($d as $d) {
if ($handle = opendir($d)) {
$showDirectory = true;
while ($entry = readdir($handle)) {
if (strpos($entry, "input") !== FALSE) {
$showDirectory = false;
break;
}
}
if($showDirectory)
{
echo $d;
}
closedir($handle);
}
}
}
Других решений пока нет …