[PHP] array sorteren op extensie dan op naam

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • nitoone
  • Registratie: November 2003
  • Laatst online: 15-02-2021
voor mijn localhost, webserver ben ik bezig met een directory "walker" nu loop ik alleen tegen het probleem aan met mijn geringe php kennis het me maar niet lukt een array eerst te sorteren op extensie en daarbinnen weer sorteren op naam.

PHP:
1
$files[] = array('name' => $file,'type' => end(explode('.',$file)));


voor zover lukt het me wel een array te maken welke beide van elkaar onderscheid maar dan ...

alvast bedankt !

Acties:
  • 0 Henk 'm!

  • skabouter
  • Registratie: Oktober 2000
  • Laatst online: 20-08 08:55

skabouter

Skabouter

Zie hier een mogelijke de oplossing

PHP:
1
2
3
4
5
6
7
8
9
10
<?php
$files[] = array('name' => $file,'type' => end(explode('.',$file))); 

foreach ($files as $key => $row) {
   $name[$key]  = $row['name'];
   $type[$key] = $row['type'];
}

array_multisort($name, SORT_DESC, $type, SORT_DESC, $files);
?> 


Even zoeken op php.net had dit probleem zo op kunnen lossen http://nl3.php.net/manual/en/function.array-multisort.php

[ Dislect ]


Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 21:31

Gonadan

Admin Beeld & Geluid, Harde Waren
PHP:
1
2
$files[] = array('type' => end(explode('.',$file)), 'name' => $file);
sort($files);

sort() sorteert eerst op de eerste values en dan op de 2e enz..

PHP.net linkjuh KLIK
;)

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • 0 Henk 'm!

  • nitoone
  • Registratie: November 2003
  • Laatst online: 15-02-2021
thnx,
ja, ik heb alle voorbeelden op php.net van array's, array_multisort etc doorgelopen maar krijg het gewoon niet werkende ... ook met dit voorbeeld krijg ik nog een vreemde sortering maar ik ga hier nog even mee puzzellen.

Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 21:31

Gonadan

Admin Beeld & Geluid, Harde Waren
Na mijn test krijg ik dit:
Array
(
    [0] => Array
        (
            [type] => bat
            [name] => a
        )

    [1] => Array
        (
            [type] => bat
            [name] => b
        )

    [2] => Array
        (
            [type] => exe
            [name] => a
        )

    [3] => Array
        (
            [type] => exe
            [name] => b
        )

    [4] => Array
        (
            [type] => exe
            [name] => c
        )
)

Ziet jouw array er wel net zo uit? Of heb je stiekem een andere structuur? ;)

Edit:
Let op dat ik type en name omgewisseld heb zodat hij eerst op type sorteert hè. :)

[ Voor 7% gewijzigd door Gonadan op 29-11-2006 15:51 ]

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • 0 Henk 'm!

  • nitoone
  • Registratie: November 2003
  • Laatst online: 15-02-2021
ja,.. bijna

PHP:
1
2
array_multisort($type, SORT_DESC, $name, SORT_DESC); 
$files=array_merge($name,$type);


die laatste $files eruit gehaalt en type/name omgedraait .... nu werkt hij !
nu alleen nog ff die print goed zien te krijgen want die print nu eerst alle namen en vervolgens nog een keer alle extensies maar dat moet geen probleem opleveren ..

bedankt !
Pagina: 1