Versio

Array sorteren

Overzicht Reageren

Herjan -

Herjan -

11/07/2007 15:35:00
Quote Anchor link
Ik heb de volgende array:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Array
(
    [0] => Array
        (
            [type] => r
            [nr] => 8
        )

    [1] => Array
        (
            [type] => h
            [nr] => 3
        )

    [2] => Array
        (
            [type] => k
            [nr] => 6
        )
)


Nu wil ik deze graag sorteren op array[x]['nr']. Dit zou dan dus de uitkomst moeten zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Array
(
    [0] => Array
        (
            [type] => h
            [nr] => 3
        )

    [1] => Array
        (
            [type] => k
            [nr] => 6
        )

    [2] => Array
        (
            [type] => r
            [nr] => 8
        )
)


Zit daarvoor al een functie in PHP, of moet ik die zelf schrijven?
 
PHP hulp

PHP hulp

23/05/2012 21:45:14
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Bart van der veen

bart van der veen

11/07/2007 15:44:00
Quote Anchor link
is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$array
=array("h"=>"3","k"=>"6"); //enz
?>

niet makkelijker te sorteren als een multidemensionale array:

en anders hier ff naar kijken:
http://nl3.php.net/manual/nl/function.array-multisort.php
 
Herjan -

Herjan -

11/07/2007 15:49:00
Quote Anchor link
Nee, want het is een kaartspel. Type wil zeggen welk figuurtje het is. Aangezien het 4 verschillende figuurtjes zijn, kan ik dan dus maar één kaart van elk type in het kaartspel stoppen.

En kun je misschien een voorbeeld geven hoe het er ongeveer uit zou moeten komen te zien met array_multisort? Zo te zien moet ik dan voor elke element van de array opgeven hoe de array die daarin zit gesorteerd moet worden. Dat lijkt me niet erg efficiënt.
 
- SanThe -

- SanThe -

11/07/2007 16:24:00
Quote Anchor link
Ik heb het idee dat je een andere indeling moet gebruiken om het te kunnen sorteren.
 
Henk

Henk

11/07/2007 16:46:00
Quote Anchor link
Ik heb een beetje zitten puzzelen, en het werkt.

Wat vind je ervan?
 
Herjan -

Herjan -

11/07/2007 17:56:00
Quote Anchor link
Dankjewel Henk!

Edit:

Ik was uiteraard niet tevreden. Ik heb dus, geïnspireerd door de functie van Henk, de onderstaande functie gemaakt, die maar twee foreach-loops heeft :P

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

function sorteer_herjan(&$cards, $key)
{

    $idnr = array();
    foreach($cards as $id => $card)
    {

        $idnr[$id] = $card[$key];
    }

    asort($idnr);
    $new = array();
    foreach($idnr as $id => $keyvalue)
    {

        $new[] = $cards[$id];
    }

    $cards = $new;
    return $new;
}


?>

Gewijzigd op 01/01/1970 01:00:00 door Herjan -
 



Overzicht Reageren