Search code examples
phpsortingglob

Organize list numerically instead of alphabetically


I have a bunch of folders like this:

Letter#1
Letter#10
Letter#2
Letter#3

How can I re-order them so that when I read them in using glob I get:

Letter#1
Letter#2
Letter#3
Letter#10

Solution

  • There are many ways to get it ordered.

    1. You can just remove the string Letter# and then order it like this.

    $folders = ['Letter#1', 'Letter#2', 'Letter#3', 'Letter#10']; 
    $prefix = 'Letter#';
    
    foreach ($folders as $key => $folder) {
        $folders[$key] = ltrim($folder, $prefix); 
    }
    
    $folder = sort($folders, SORT_NUMERIC);
    
    foreach ($folders as $key => $folder) {
        $folders[$key] = $prefix . $folder; 
    }
    
    print_r($folders);