Avatar billede sjh Nybegynder
06. august 2006 - 11:56 Der er 3 kommentarer og
1 løsning

Sortering af array type, name, size.

Jeg skal bruge 3 funktioner som kan sorter efter type, navn og size.. men kan ikke få det til at funke.. hjælp :D

Det ser sådan ud:

// array(TYPE, NAME, SIZE)
$arrFiles[] = array("txt", "a.txt", 56);
$arrFiles[] = array("php", "connect.php", 187);
$arrFiles[] = array("php", "index.php", 42);
$arrFiles[] = array("js", "javascript.js", 192);
$arrFiles[] = array("txt", "z.txt", 36);


Det skal så sådan ud:

-> TYPE:
Array
(
    [0] => Array
        (
            [0] => js
            [1] => javascript.js
            [2] => 192
        )
    [1] => Array
        (
            [0] => php
            [1] => connect.php
            [2] => 187
        )
    [2] => Array
        (
            [0] => php
            [1] => index.php
            [2] => 42
        )
    [3] => Array
        (
            [0] => txt
            [1] => a.txt
            [2] => 56
        )
    [4] => Array
        (
            [0] => txt
            [1] => z.txt
            [2] => 36
        )
)

-> NAME:
Array
(
    [0] => Array
        (
            [0] => txt
            [1] => a.txt
            [2] => 56
        )
    [1] => Array
        (
            [0] => php
            [1] => connect.php
            [2] => 187
        )
    [2] => Array
        (
            [0] => php
            [1] => index.php
            [2] => 42
        )
    [3] => Array
        (
            [0] => js
            [1] => javascript.js
            [2] => 192
        )
    [4] => Array
        (
            [0] => txt
            [1] => z.txt
            [2] => 36
        )
)

-> SIZE:
Array
(
    [0] => Array
        (
            [0] => txt
            [1] => z.txt
            [2] => 36
        )
    [1] => Array
        (
            [0] => php
            [1] => index.php
            [2] => 42
        )
    [2] => Array
        (
            [0] => txt
            [1] => a.txt
            [2] => 56
        )
    [3] => Array
        (
            [0] => php
            [1] => connect.php
            [2] => 187
        )
    [4] => Array
        (
            [0] => js
            [1] => javascript.js
            [2] => 192
        )
)
Avatar billede fojensen Nybegynder
06. august 2006 - 16:29 #1
nedenstående testfil sorter_array.php kaldes med en query string, eksempelvis sorter_array.php?order=2 (værdierne 0 til 2)

<?php

// array(TYPE, NAME, SIZE)
$arrFiles[] = array("txt", "a.txt", 56);
$arrFiles[] = array("php", "connect.php", 187);
$arrFiles[] = array("php", "index.php", 42);
$arrFiles[] = array("js", "javascript.js", 192);
$arrFiles[] = array("txt", "z.txt", 36);

if (isset($_GET['order'])) {
$order_by = $_GET['order'];
  for ($i=0; $i<count($arrFiles); $i++) { // tæller hvor mange filer der findes
  $arrayToSortAfter[] = $arrFiles[$i][$order_by];  // laver et supplerende array der skal sorteres efter
  }
}

//print_r($arrFiles);
echo "<br/>\n";
echo "arrayToSortAfter<br/>\n";
print_r($arrayToSortAfter); // udskriver det array der skal sorteres efter

if ($order_by == "2"){ // hvis sortering efter størrelse
array_multisort($arrayToSortAfter, SORT_DESC, SORT_NUMERIC, $arrFiles); // sorterer array efter et andet array
} else {
array_multisort($arrayToSortAfter, SORT_ASC, SORT_STRING, $arrFiles); // sorterer array efter et andet array
}
echo "<br/>\n";
echo "array sorteret<br/>\n";
print_r($arrFiles); // udskriver det sorterede array

?>
Avatar billede sjh Nybegynder
06. august 2006 - 21:07 #2
tænke nok det var array_multisort() der skulle bruges.. Mange tak for hjælpen..
Avatar billede fojensen Nybegynder
06. august 2006 - 21:17 #3
det er kun en fornøjelse at hjælpe...

det med at lave $arrayToSortAfter kan måske laves på mange måder, og det kan du jo bare lave som du bedst ka li' det.
Avatar billede sjh Nybegynder
06. august 2006 - 21:30 #4
Ja tak.. det har været en stor hjælp.. nu har jeg fattet lidt mere af array_multisort()  :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester