[php] Array sorteren gaat niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • insan1ty
  • Registratie: Oktober 2001
  • Laatst online: 15-03-2023
Hoi

Ik lees een dir in in PHP, alle filenames en filesizes in een array en de array sorteren. Wat gebeurt er echter, de filenames worden alfabetisch gesorteerd en de filesizes apart hiervan op grootte... Met een niet kloppende lijst als gevolg.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<? 

// bovenliggende dir gebruiken 
$dir = "../dirnaam/";

// array welke bestanden en mappen niet moeten worden weergegeven 
$escape = array("Thumbs.db", 
                ".", 
                ".."); 

// open de dir 
if ($handle = opendir($dir)) { 
    // teller 
    $i = 0; 
     
    // loop alle bestanden langs 
    while (false !== ($file = readdir($handle))) { 
    $fetchfile_fullpath = $dir . $file; 
        // kijken of de map of bestand wel mag worden weergegeven 
        if (!in_array($file, $escape)) { 
            
            // gegevens in array stoppen 
            
            $FILE["name"][$i] = $file; 
            $FILE["size"][$i] = round(filesize($fetchfile_fullpath) / 1024); 
            
            $i++; 
        } 
    } 
    // dir sluiten 
    closedir($handle); 
     
    // sorteren 
    sort (&$FILE["size"]); 
     
    // voor testen 
    # print_r($FILE); 

        // alle files langslopen 
    for($i = 0; $i < sizeof($FILE["size"]); $i++ ) { 
        echo $FILE["name"][$i]." is ".$FILE["size"][$i]."  KB.<BR>\n";
    } 
     
    } 
?>


input:
pietje2
klaasje3
jantje1

de output wordt dan dus:
jantje1
klaasje2
pietje3

terwijl dat moet zijn:
jantje1
pietje2
klaasje3


Beetje vaag maar ik hoop dat het duidelijk is

Zie ik iets over het hoofd?

Oh en dan nog iets.. Ik moet de array desc gesorteerd hebben en nu kan sort alleen asc sorteren... Kan ik het geheel zo omdraaien zonder dat filename en size weer "los" gaan?

[ Voor 33% gewijzigd door insan1ty op 09-02-2004 02:30 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nogal DUH natuurlijk, je hebt 2 aparte arrays, één voor naam en één voor size. Dat je die 2 arrays weer hebt ondergebracht in een andere array doet er weinig toe

Als je ze nou andersom onderverdeeld, dus $FILE[$i]["naam"] ipv $FILE["naam"][$i], dan correspondeert 1 entry in $FILE ook gewoon met een file, ipv met een één of andere vage array. Dan kun je vervolgens met usort () en een eigen compare functie de array gaan sorteren (in die compare functie vergelijk je dan ook de filegrootten)

.edit: het kan op jouw manier overigens wel met array_multisort, maar zoals gezegd kun je je afvragen of je huidige manier van opslag wel zo netjes is

[ Voor 16% gewijzigd door .oisyn op 09-02-2004 04:11 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.