بعد استخدام $ = ملفات DirectoryIterator الجديدة () في PHP، كيف يمكن فرز العناصر؟

StackOverflow https://stackoverflow.com/questions/1076881

  •  21-08-2019
  •  | 
  •  

سؤال

ويمكننا الحصول على الملفات في الدليل في PHP من قبل

$files = new DirectoryIterator() 

وبعد ذلك هناك طريقة سهلة لفرز العناصر في ترتيب معين لعرض لهم؟ شكر.

هل كانت مفيدة؟

المحلول

وانها لا تبدو هناك طريقة لفرز البيانات ضمن مكرر.

هل يمكن وضع عرض البيانات في صفيف الوسيطة، مع مفتاح القيمة التي ترغب في ترتيب النتائج بحسب، وندعو 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";
}

وتحرير:

وإذا قمت بوضع جميع المعلومات التي ترغب في الإخراج للملفات في قيم مجموعة، يمكنك ببساطة تنهار () مجموعة بعد ذلك، وبدلا من تنفيذ الحلقات خلال البيانات مرة أخرى.

نصائح أخرى

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

قد يكون ما كنت تبحث عنه، يمكنك تطبيق دائما بالطبع وظيفة الفرز لفرز مسارات حسب تفضيلاتك بعد ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top