2011-10-07 12 views
10

के बिना एक निर्देशिका में फ़ाइलों को सूचीबद्ध करने के लिए कैसे यह एक निर्देशिका में फ़ाइलों को सूचीबद्ध करने के लिए मेरे कोड के शुरू भाग है:पीएचपी: लिस्टिंग उपनिर्देशिका

$files = scandir($dir); 
$array = array(); 
foreach($files as $file) 
{ 
    if($file != '.' && $file != '..' && !is_dir($file)){ 
      .... 

मैं सूची के बिना एक निर्देशिका में सभी फ़ाइलों को सूचीबद्ध करने के लिए कोशिश कर रहा हूँ सबफ़ोल्डर्स। कोड काम कर रहा है, लेकिन दोनों फाइलें और फ़ोल्डर्स दिखा रहा है। मैंने ऊपर दिए गए मेरे कोड में !is_dir($file) जोड़ा है, लेकिन परिणाम अभी भी वही हैं।

उत्तर

18

यह इस तरह होना चाहिए, मुझे लगता है कि:

$files = scandir($dir); 
foreach($files as $file) 
{ 
    if(is_file($dir.$file)){ 
     .... 
+0

आह, यही वह है। धन्यवाद – Pinkie

+1

'।' के बाद से और '..' निर्देशिकाएं हैं, "$ फ़ाइल! = '।' && $ फ़ाइल! = '..' && "अभिव्यक्ति के भीतर अनावश्यक है। और पिछला डीआईआर सेपरेटर कोई फर्क नहीं पड़ता। – symcbean

+0

धन्यवाद @ सिमबीन। आप सही हे। मैंने उन्हें हटा दिया। – Pinkie

8

बस is_file का उपयोग करें।

उदाहरण:

foreach($files as $file) 
{ 
    if(is_file($file)) 
    { 
     // Something 
    } 
} 
+0

मैं कर सकता, लेकिन मेरे विशिष्ट उदाहरण के लिए मुझे पता है क्यों is_dir() काम कर रहा था चाहता था। धन्यवाद +1 – Pinkie

1

क्या इसलिए कदाचित सरल कुछ के लिए एक दर्द! मेरे लिए कुछ भी काम नहीं किया ... परिणाम प्राप्त करने के लिए मैंने माना कि फ़ाइल नाम का विस्तार था जो मेरे मामले में होना चाहिए।

if ($handle = opendir($opendir)) { 
    while (false !== ($entry = readdir($handle))) { 
     $pos = strpos($entry, '.'); 
     if ($entry != "." && $entry != ".." && is_numeric($pos) ) { 

............ अच्छा प्रविष्टि

+0

अच्छी तरह से, आपने इंगित किया कि, लेकिन फिर भी, उनके नामों में बिना डॉट्स के रोज़मर्रा की फाइलें होती हैं। – dachi

1

यह फ़ाइलों तो स्कैन करते हैं तो जाँच करेगा। या .. एक सरणी में है। फिर फ़ाइलों को छोड़कर धक्का दें। और .. नई फाइलों [] सरणी में।

इस प्रयास करें:

$scannedFiles = scandir($fullPath); 
$files = []; 

foreach ($scannedFiles as $file) { 
    if (!in_array(trim($file), ['.', '..'])) { 
     $files[] = $file; 
    } 
} 
+0

हैलो, औरस्टैक ओवरफ्लो में आपका स्वागत है। कृपया कोड में कुछ स्पष्टीकरण जोड़ें। – Chaithanya

संबंधित मुद्दे