2011-09-15 7 views
2

J'utilise glob à un tableau mes sous-répertoirestableau Glob par valeur numérique

<?php 
$items = glob("../albums/*", GLOB_ONLYDIR); 
foreach($items as $item) { 
    echo "$item\n "; 
} 
?> 

il les ordonne par l'alphabet, je voudrais les commander en nombre

si je suis sous répertoires nommés 1, 3, 5, 10

le sera organisé comme ceci: 10, 1, 3, 5

je les veux être comme ça 1, 3, 5, 10

Y a-t-il une option? merci

EDIT: maintenant j'ai trouvé natsort ($ files); et quand im en utilisant avec:

$items = array_slice(glob('albums/*', GLOB_ONLYDIR), 0, 4); 
natsort($items); 

et mes dossiers sont 995-1000 il me donne ce tableau: 995, 996, 997, 1000

+1

Avez-vous essayé sort() http://php.net/manual/en/function.sort.php –

+0

Je ne sais pas ce que cela donnera, mais vous avez essayé GLOB_NOSORT? – Geoffroy

Répondre

5

Jetez un oeil à natsort()

+0

wow si simple! Merci!!! :) – Elad

+0

mais maintenant il fait un conflit, lorsqu'il est utilisé dans '$ items = array_slice (glob ('albums/*', GLOB_ONLYDIR), 0, 4); natsort ($ articles); 'et les dossiers sont 995,996,997,998,999,1000 il donne le 995,996,997 et 1000 – Elad

+1

vous devez faire le tri avant le découpage:' $ items = glob (..); natsort ($ articles); $ items = array_slice ($ items, 0, 4); ' – Niko

3

utilisation natsort pour trier le tableau dans l'ordre naturel:

natsort($array); 
1

Vous pouvez trier le tableau après le glob:

sort($items, SORT_NUMERIC); 
1

Vous pouvez le faire en utilisant le tri gamme « natsort » comme celui-ci

<php 
     $items = glob("../albums/*", GLOB_ONLYDIR); 
     natsort($items); 
    ?> 

maintenant si l'impression ce tableau alors vous obtenez le bon résultat par cela.

print_r($items);