[PHP] Sorteren multidimensionale array

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TheGuest
  • Registratie: Augustus 2003
  • Laatst online: 29-01-2024

TheGuest

De enige echte

Topicstarter
Hallo,

Ik loop tegen het volgende probleem aan en ik vindt maar geen oplossing. Het sorteren van een multidimensionale array wilt mij niet lukken.

Ik heb de volgende stuk code geschreven om een map uit te lezen met foto's en de gegevens van elke foto in een array te plaatsen:

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
function Album2Array($sAlbum){
    $ALBUM = array('src' => array(), 'name' => array(), 'height_init' => array(), 'width_init' => array(), 'height' => array(), 'width' => array());

    if(is_dir('./fotos/'.$sAlbum)){
        if($rHandle = opendir('./fotos/'.$sAlbum)){
            while($sFile = readdir($rHandle)){
                $aAllowedExtensions = array('jpg','gif','png','jpeg');
                $aFileExplode = explode('.',$sFile);
                $sFileName = $aFileExplode[0];
                $sFileExtension = $aFileExplode[1];

                if(in_array($sFileExtension,$aAllowedExtensions)){
                    $ALBUM['src'][] = $sFile;
                    $ALBUM['name'][] = $sFileName;

                    if(list($iWidthInit, $iHeightInit, $iType, $sAttr) = @getimagesize('./fotos/'.$sAlbum.'/'.$sFile)){
                        $ALBUM['height_init'][] = $iHeightInit;
                        $ALBUM['width_init'][] = $iWidthInit;

                        if($iWidthInit > 100){
                            $ALBUM['height'][] = ceil($iHeightInit*(100/$iWidthInit));
                            $ALBUM['width'][] = 100;
                        }else{
                            $ALBUM['height'][] = $iHeightInit;
                            $ALBUM['width'][] = $iWidthInit;
                        }
                    }else{
                        $ALBUM['height_init'][] = 100;
                        $ALBUM['width_init'][] = 100;
                        $ALBUM['height'][] = 100;
                        $ALBUM['width'][] = 100;
                    }

                }
            }
            closedir($rHandle);
        }
    }

    return $ALBUM;
}


Deze functie geeft dus het ALBUM array terug. Maar deze moet op src gesorteerd worden. Ik heb uiteraard google geprobeerd en de volgende oplossingen getracht toe te passen, maar geen enkele oplossing werkt:

http://codingforums.com/showthread.php?t=71904
http://www.samspublishing...asp?p=31840&seqNum=6&rl=1

Ik krijg elke keer de volgende volgorde te zien:

code:
1
2
3
4
5
6
["src"]=>
  array(121) {
    [0]=>
    string(12) "_DSD8901.jpg"
    [1]=>
    string(12) "_DSD8830.jpg"


Wat dus duidelijk niet gesorteerd is.

Waarom wilt dit niet lukken? De webhost draait PHP 4.4 dus dat zou geen probleem moeten zijn.

Acties:
  • 0 Henk 'm!

  • IntToStr
  • Registratie: December 2003
  • Laatst online: 21:06
Is het niet makkelijker om de array als volgt op te slaan:
PHP:
1
2
3
4
5
6
$image['src'] = ...;
$image['name'] = ...;
...
$image['width'] = ...;

$album[] = $image;

Volgens mij is het dan niet zo schokkend om hier een (desnoods zelfgeschreven) sort op los te laten.

Acties:
  • 0 Henk 'm!

  • TheGuest
  • Registratie: Augustus 2003
  • Laatst online: 29-01-2024

TheGuest

De enige echte

Topicstarter
Hm, op jouw manier werkt usort prima, vreemd. Maar ik ben tevreden, ik kan weer verder. Bedankt :)