2009-07-02 6 views
5

हम उन्हें प्रदर्शित करने के लिए एक विशेष क्रम में आइटम सॉर्ट करने के लिए एक आसान तरीका है द्वारा, आप आइटम को कैसे क्रमबद्ध करते हैं?

$files = new DirectoryIterator() 

उसके बाद PHP में एक निर्देशिका में फ़ाइलों को मिल सकता है? धन्यवाद।

+0

@ 動靜 能量 - क्या आप चीनी हैं? –

+2

[सलाथ/स्प्ल-उदाहरण - सॉर्टिंग इटरेटर्स] (https://github.com/salathe/spl-examples/wiki/Sorting-Iterators) – hakre

उत्तर

9

ऐसा लगता है कि इटरेटर के भीतर डेटा को सॉर्ट करने का कोई तरीका नहीं है।

आप प्रदर्शन डेटा को उस मध्यस्थ सरणी में रख सकते हैं, जिसकी कीमत आप सॉर्ट करना चाहते हैं, और सरणी पर ksort() को कॉल करें। हालांकि डेटा पर यह दो पास लेगा।

$path = "."; 
$files = new DirectoryIterator($path); 
$files_array = array(); 

while($files->valid()) { 
     // sort key, ie. modified timestamp 
     $key = $files->getMTime(); 
     $data = $files->getFilename(); 
     $files_array[$key] = $data; 
     $files->next(); 
} 
ksort($files_array); 
foreach($files_array as $key => $file){ 
    print $key . " => " . $file . "\n"; 
} 

संपादित करें:

अगर आप जानकारी के सभी कि आप सरणी मूल्यों में फ़ाइलों के लिए उत्पादन करना चाहते जगह, तो आप बस (के बजाय एक बार डेटा के माध्यम से पाशन के फटना कर सकते हैं) सरणी बाद में फिर।

-4
$files = new DirectoryIterator($path); 
$i = 0; 
$paths = array(); 
while($files->valid()) { 
    $paths[$i++] = $files->getFileName(); 
    $files->next(); 
} 
sort($paths) 

हो सकता है आप के लिए क्या देख रहे हैं, आप हमेशा के पाठ्यक्रम तरह समारोह है कि के बाद अपनी प्राथमिकता के आधार पथ सॉर्ट करने के लिए आवेदन कर सकते हैं।