Sembra che avete bisogno di scandir
invece di glob, come glob non può vedere i file nascosti unix.
<?php
$pid = basename($_GET["prodref"]); //let's sanitize it a bit
$dir = "/assets/$pid/v";
if (is_dir_empty($dir)) {
echo "the folder is empty";
}else{
echo "the folder is NOT empty";
}
function is_dir_empty($dir) {
if (!is_readable($dir)) return NULL;
return (count(scandir($dir)) == 2);
}
?>
Si noti che questo codice non è il vertice di efficienza, in quanto è necessario leggere tutti i file solo per dire se la directory è vuota. Così, la versione migliore sarebbe
function dir_is_empty($dir) {
$handle = opendir($dir);
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
return FALSE;
}
}
return TRUE;
}
A proposito, non usare parole di sostituire booleane valori. Lo scopo stesso di quest'ultimo è dirti se qualcosa è vuoto o no. Un'espressione
a === b
torna già Empty
o Non Empty
in termini di linguaggio di programmazione, FALSE
o TRUE
rispettivamente - in modo, è possibile utilizzare il molto frutto in strutture di controllo come IF()
senza valori intermedi
fonte
2011-09-21 09:52:55
E 'solo un errore di battitura nella vostra istruzione if. Usa == (confronta) invece del singolo = (assegna). –