ऐसा लगता है कि आपको scandir
ग्लोब की जगह जरूरत है , क्योंकि ग्लोब यूनिक्स की छिपी हुई फाइलों को नहीं देख सकता है।
<?php
$pid = basename($_GET["prodref"]);
$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);
}
?>
ध्यान दें कि यह कोड दक्षता का शिखर नहीं है, क्योंकि निर्देशिका खाली होने पर केवल यह बताने के लिए सभी फाइलों को पढ़ना अनावश्यक है। तो, बेहतर संस्करण होगा
function dir_is_empty($dir) {
$handle = opendir($dir);
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
closedir($handle);
return FALSE;
}
}
closedir($handle);
return TRUE;
}
वैसे, बूलियन मूल्यों को प्रतिस्थापित करने के लिए शब्दों का उपयोग न करें । उत्तरार्द्ध का बहुत उद्देश्य आपको यह बताना है कि कुछ खाली है या नहीं। एक
a === b
अभिव्यक्ति पहले से ही Empty
या Non Empty
प्रोग्रामिंग भाषा के संदर्भ में, FALSE
या TRUE
क्रमशः - इसलिए, आप IF()
बिना किसी मध्यवर्ती मूल्यों के जैसे नियंत्रण संरचनाओं में बहुत परिणाम का उपयोग कर सकते हैं