Avatar billede dmg Nybegynder
02. januar 2013 - 23:30 Der er 7 kommentarer

Brug for hjaelp til at sortere array

Hej Experter,

Sorry er paa US keyboard.

Har brug for hjaelp til at sortere nedenstoende array efter dato og tid.

Problemet er at key 0 er hoved overskriften til key 1 og 2 er hoved overskriften til 3 etc.
Hoeber der er en der kan gi' et exempel.

Mange mange tak




Array
(
    [0] => A1/APT "xxx123 13/00/00" 993     
    [1] => Array
        (
            [0] => 05-10-11
            [1] => 01:41     
            [2] => CCITT7 SIGNALLING LINK FAILURE
            [3] => LS            SPID    SLC  ST
            [4] => x-1          x-2  0  x-3
            [5] => UIK
            [6] => x-0 / UPD-129
            [7] => FCODE  INFO  REASON
            [8] =>  206  H'0  NOT ALIGNED TIME-OUT (T2 EXPIRED)
        )

    [2] => A1/APT "xxx123 13/00/00" 994     
    [3] => Array
        (
            [0] => 07-11-12
            [1] => 01:42     
            [2] => CCITT7 SIGNALLING LINK FAILURE
            [3] => LS            SPID    SLC  ST
            [4] => x-1          x-2  0  x-3
            [5] => UIK
            [6] => x-0 / UPD-129
            [7] => FCODE  INFO  REASON
            [8] =>  206  H'0  NOT ALIGNED TIME-OUT (T2 EXPIRED)
        )

    [4] => A1/APT "xxx123 13/00/00" 995     
    [5] => Array
        (
            [0] => 07-10-13
            [1] => 01:41     
            [2] => CCITT7 SIGNALLING LINK FAILURE
            [3] => LS            SPID    SLC  ST
            [4] => x-1          x-2  0  x-3
            [5] => UIK
            [6] => x-0 / UPD-129
            [7] => FCODE  INFO  REASON
            [8] =>  206  H'0  NOT ALIGNED TIME-OUT (T2 EXPIRED)
        )

    [6] => A1/APT "xxx123 13/00/00" 996     
    [7] => Array
        (
            [0] => 05-10-10
            [1] => 01:41     
            [2] => CCITT7 SIGNALLING LINK FAILURE
            [3] => LS            SPID    SLC  ST
            [4] => x-1          x-2  0  x-3
            [5] => UIK
            [6] => x-0 / UPD-129
            [7] => FYGCODE  INFO  REASON
            [8] =>  206  H'0  NOT ALIGNED TIME-OUT (T2 EXPIRED)
        )
)
Avatar billede scootergrisen Nybegynder
02. januar 2013 - 23:52 #1
Avatar billede olebole Juniormester
03. januar 2013 - 00:24 #2
<ole>

Det er en skidt struktur, dit array har. Du bør knytte elementerne sammen - ét lige og ét ulige. Enten ved at oprette et nyt array for hver to elementer - eller ved at lægge de ulige elementer ind under de lige (eller omvendt)

/mvh
</bole>
Avatar billede olebole Juniormester
03. januar 2013 - 01:13 #3
Du kan prøve noget i stil med:

$myArr = array(
    "A1/APT \"xxx123 13/00/00\" 993",
    array(
        "05-10-11",
        "01:41",
        "CCITT7 SIGNALLING LINK FAILURE",
        "LS            SPID    SLC  ST",
        "x-1          x-2  0  x-3",
        "UIK",
        "x-0 / UPD-129",
        "FCODE  INFO  REASON",
        " 206  H'0  NOT ALIGNED TIME-OUT (T2 EXPIRED)"
    ),

    "A1/APT \"xxx123 13/00/00\" 994",
    array(
        "07-11-12",
        "01:42",
        "CCITT7 SIGNALLING LINK FAILURE",
        "LS            SPID    SLC  ST",
        "x-1          x-2  0  x-3",
        "UIK",
        "x-0 / UPD-129",
        "FCODE  INFO  REASON",
        " 206  H'0  NOT ALIGNED TIME-OUT (T2 EXPIRED)"
    ),

    "A1/APT \"xxx123 13/00/00\" 995",
    array(
        "07-10-13",
        "01:41",
        "CCITT7 SIGNALLING LINK FAILURE",
        "LS            SPID    SLC  ST",
        "x-1          x-2  0  x-3",
        "UIK",
        "x-0 / UPD-129",
        "FCODE  INFO  REASON",
        " 206  H'0  NOT ALIGNED TIME-OUT (T2 EXPIRED)"
    ),

    "A1/APT \"xxx123 13/00/00\" 996",
    array(
        "05-10-10",
        "01:41",
        "CCITT7 SIGNALLING LINK FAILURE",
        "LS            SPID    SLC  ST",
        "x-1          x-2  0  x-3",
        "UIK",
        "x-0 / UPD-129",
        "FYGCODE  INFO  REASON",
        " 206  H'0  NOT ALIGNED TIME-OUT (T2 EXPIRED)"
    )
);

function cmp($a, $b) {
    $aDate = explode('-', $a[1][0]);
    $aTime = explode(':', $a[1][1]);
    $a = mktime($aTime[0], $aTime[1], 0, $aDate[1], $aDate[0], $aDate[2]);
   
    $aDate = explode('-', $b[1][0]);
    $aTime = explode(':', $b[1][1]);
    $b = mktime($aTime[0], $aTime[1], 0, $aDate[1], $aDate[0], $aDate[2]);
   
    if ($a==$b) return 0;
    return $a<$b ? -1 : 1;
}

$arrNew = array();
for ($i=0,$j=count($myArr); $i<$j; $i+=2) {
    $arrNew[] = array($myArr[$i], $myArr[$i+1]);
}
usort($arrNew, 'cmp');

var_dump($arrNew);

Det nye array vil dog have en lidt anden struktur, men det skulle være til at arbejde med. Desværre er sorteringsfunktionen lidt tung, hvilket hovedsageligt skyldes det danske datoformat  =)
Avatar billede dmg Nybegynder
03. januar 2013 - 03:37 #4
Hej Olebole,

Mange tak for dit eksempel.

Jeg proevde det paa min kode og det virkede ikke helt, men kan se du har lavet et array der gruppere disse.
Jeg modtager folegnde fejl.

Er det fordi jeg anvender dato formatet mmddyy?
som du kan se forneden sortere den ik helt korrekt efter som datoen 01-03-13 skulle vaere nede i bunden.

Mange mange tak for hjaelpen so far.


Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 157
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 161
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 157
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 161
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 157
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 161
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 157
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 161
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 157
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 161
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 157
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 161
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 157
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 161
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 157
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 161
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 157
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 161
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 157
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 161
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 157
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 161
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 157
Notice:  A non well formed numeric value encountered in C:\intepub\wwwroot\xxx\xxxx.php on line 161

line 157: $a = mktime($aTime[0], $aTime[1], 0, $aDate[1], $aDate[0], $aDate[2]);
line 161: $b = mktime($aTime[0], $aTime[1], 0, $aDate[1], $aDate[0], $aDate[2]);

Array

(
    [0] => Array

        (
            [0] => A1/APT "xxx 13/00/00" 993   

            [1] => Array

                (
                    [0] => 05-10-11
                    [1] => 01:41   
                    [2] => xxxx
                    [3] => xx            xxx    xxx  xx
                    [4] => xxxx          xxxxxx  0  xx
                    [5] => SDDL
                    [6] => x1 / x2
                    [7] => FCODE  INFO  REASON
                    [8] =>  206  H'0  NOT ALIGNED TIME-OUT (T2 EXPIRED)
                )
        )
    [1] => Array

        (
            [0] => A1/APT "xxx 13/00/00" 995   
            [1] => Array
                (
                    [0] => 05-10-11
                    [1] => 01:42   
                    [2] => xxxx
                    [3] => xx            xxxx    xxx  xx
                    [4] => xxxxx        xxxx  2  xxxx
                    [5] => xxL
                    [6] => xxx / xxx
                    [7] => FCODE  INFO  REASON
                    [8] =>  206  H'0  NOT ALIGNED TIME-OUT (T2 EXPIRED)
                )
        )
    [2] => Array

        (
            [0] => A1/APT "xxx 13/00/00" 996   
            [1] => Array
                (
                    [0] => 05-10-11
                    [1] => 01:42   
                    [2] => xxxxxxxx
                    [3] => xx            xxxx    xxx  xx
                    [4] => 2-616          FCMSC01  3  C7ST2C-3
                    [5] => xxx
                    [6] => xxxxx / xxxxxxx
                    [7] => FCODE  INFO  REASON
                    [8] =>  206  H'0  NOT ALIGNED TIME-OUT (T2 EXPIRED)
                )
        )
    [3] => Array
        (
            [0] => A1/APT "xxx 13/00/00" 994   
            [1] => Array
                (
                    [0] => 05-10-11
                    [1] => 01:42   
                    [2] => xxxxxxxx
                    [3] => xx            xxxx    xxx  xx
                    [4] => xxxxx          xx  1  xxxx
                    [5] => xxx
                    [6] => xxxxxxx / xxxxxxx
                    [7] => FCODE  INFO  REASON
                    [8] =>  206  H'0  NOT ALIGNED TIME-OUT (T2 EXPIRED)
                )
        )
    [4] => Array
        (
            [0] => A3/APT "xxx 13/00/00" 030     
            [1] => Array
                (
                    [0] => 05-12-11
                    [1] => 21:55   
                    [2] => xxxxxxxxxxxxxxxxxxxx
                )
        )
    [5] => Array
        (
            [0] => O1/APT "xxx 13/00/00" 247   
            [1] => Array
                (
                    [0] => 01-03-13
                    [1] => 00:15   
                    [2] => xxxxxxxxxxxx
                    [3] => xx
                    [4] => xxx      xxxxxxx  xxxx  xxx    xxxxxxx  xxxx    xxxx
                    [5] => xxxxx            xx    xx              xxxxxxx3  xxxxxxxxx
                )
        )
    [6] => Array
        (
            [0] => O1/APT "xxx 13/00/00" 199   
            [1] => Array
                (
                    [0] => 12-27-12
                    [1] => 22:50   
                    [2] => xxxxxxxxxxxxx
                    [3] => xx
                    [4] => xxx      xxxxxxx  xxx    xxx
                    [5] => xxxxx            5      xxxx
                )
        )
)
Avatar billede dmg Nybegynder
11. januar 2013 - 00:57 #5
Hej igen,

Jeg har modificeret mit array til nu at vise nedenstoende. Har siddet i flere timer nu og kan bare ik faa det til at sortere efter dato.
Er det muligt??

Array
(
    [05-10-2011 01:58:01] => Array
        (
            [0] => A1/APT   
            [1] => Array
                (
                    [0] => 05-10-2011
                    [1] => 01:58:01     
                    [2] => 2
                    [3] => 3
                    [4] => 4
                    [5] => 5
                    [6] => 6
                    [7] => 7
                    [8] => 8
                )

        )

    [05-10-2013 01:22:02] => Array
        (
            [0] => A1/APT     
            [1] => Array
                (
                    [0] => 05-10-2013
                    [1] => 01:22:02     
                    [2] => 2
                    [3] => 3
                    [4] => 4
                    [5] => 5
                    [6] => 6
                    [7] => 7
                    [8] => 8
                )

        )

    [05-10-2012 01:42:03] => Array
        (
            [0] => A1/APT   
            [1] => Array
                (
                    [0] => 05-10-2012
                    [1] => 01:42:03     
                    [2] => 2
                    [3] => 3
                    [4] => 4
                    [5] => 5
                    [6] => 6
                    [7] => 7
                    [8] => 8
                )
        )
)
Avatar billede olebole Juniormester
11. januar 2013 - 21:53 #6
Du kan enten bruge uksort.

En bedre idé ville dog være at skrive tidsformatet i dine keys som: YYYY-MM-DD HH:MM:SS. Så kan du nemlig bruge ksort
Avatar billede dmg Nybegynder
24. juni 2015 - 03:06 #7
Hej Ole,

Smid et svar :-) Det virkede!!!
Det uacceptablet jeg ik har kommenteret foer nu.
Mange tak for hjaelpen!
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