Sorteren van een multi-dimensionale array
Stel je hebt de volgende array: (Result van een print_r)
Code (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
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
Array
(
[0] => Array
(
[id] => 1
[name] => Niels
)
[1] => Array
(
[id] => 2
[name] => Arend
)
[2] => Array
(
[id] => 3
[name] => Danil
)
[3] => Array
(
[id] => 4
[name] => Hendrik
)
)
(
[0] => Array
(
[id] => 1
[name] => Niels
)
[1] => Array
(
[id] => 2
[name] => Arend
)
[2] => Array
(
[id] => 3
[name] => Danil
)
[3] => Array
(
[id] => 4
[name] => Hendrik
)
)
Nu wil je die array op basis van de 'name' alfabetisch gaan sorteren. Via onderstaande manier gaat dit (zeer) gemakkelijk!
Code (php)
Het resultaat van het bovenstaande is dan als volgt:
Code (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
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
Array
(
[0] => Array
(
[id] => 2
[name] => Arend
)
[1] => Array
(
[id] => 3
[name] => Danil
)
[2] => Array
(
[id] => 4
[name] => Hendrik
)
[3] => Array
(
[id] => 1
[name] => Niels
)
)
(
[0] => Array
(
[id] => 2
[name] => Arend
)
[1] => Array
(
[id] => 3
[name] => Danil
)
[2] => Array
(
[id] => 4
[name] => Hendrik
)
[3] => Array
(
[id] => 1
[name] => Niels
)
)
Wat doet nu precies usort ? De eerste letter van de functie zegt het eigenlijk al. Het sorteren van een array op basis van een door de gebruiker gedefinieerde functie. (Wordt als tweede parameter opgegeven)
Vervolgens voert usort dus de functie 'arraySort(..)' uit. In die functie wordt gebruik gemaakt van de functie strcmp. Die doet eigenlijk niets anders dan een binaire string vergelijken. usort zelf zorgt er dan voor dat het resultaat alfabetisch wordt gesorteerd.
Wanneer je de 'vergelijkings' functie zelf zou moeten schrijven kom je ongeveer op zoiets uit:
Code (php)
Wat je ook kan doen is de functie schrijven als een closure. (Zie hier voor meer informatie)
Code (php)
Andere mogelijkheden? Bekijk de volgende links eens:
- uasort
- uksort
- array_multisort
Zoals ik al zei een kleine tutorial. Meer informatie lijkt mij niet nodig. Ik hoop dat je hiermee uit de voeten kan!
Bedankt voor het lezen en wanneer je nog vragen hebt hoor ik dat graag!