Tutorials
Sorteren van een multi-dimensionale array
Een (kleine) tutorial over het sorteren van een multi-dimensionale array.
Pagina 1
Sorteren van een multi-dimensionale array
Stel je hebt de volgende array: (Result van een print_r)
Nu wil je die array op basis van de 'name' alfabetisch gaan sorteren. Via onderstaande manier gaat dit (zeer) gemakkelijk!
<?php
$jouwArray = array(); // Je huidige gevulde multi-array
uasort($jouwArray, 'arraySort');
function arraySort($a, $b)
{
return strcmp($a['name'], $b['name']);
}
?>
Het resultaat van het bovenstaande is dan als volgt:
Wat doet nu precies [php]usort[/php] ? 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 [php]usort[/php] dus de functie 'arraySort(..)' uit. In die functie wordt gebruik gemaakt van de functie [php]strcmp[/php]. Die doet eigenlijk niets anders dan een binaire string vergelijken. [php]usort[/php] 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:
<?php
function comparison($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
?>
Wat je ook kan doen is de functie schrijven als een closure. (Zie hier voor meer informatie)
<?php
$jouwArray = array(); // Je huidige gevulde multi-array
uasort($jouwArray, function ($a, $b)
{
return strcmp($a['name'], $b['name']);
});
?>
Andere mogelijkheden? Bekijk de volgende links eens:
- [php]uasort[/php]
- [php]uksort[/php]
- [php]array_multisort[/php]
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!
Array
(
[0] => Array
(
[id] => 1
[name] => Niels
)
[1] => Array
(
[id] => 2
[name] => Arend
)
[2] => Array
(
[id] => 3
[name] => Daniël
)
[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!
<?php
$jouwArray = array(); // Je huidige gevulde multi-array
uasort($jouwArray, 'arraySort');
function arraySort($a, $b)
{
return strcmp($a['name'], $b['name']);
}
?>
Het resultaat van het bovenstaande is dan als volgt:
Array
(
[0] => Array
(
[id] => 2
[name] => Arend
)
[1] => Array
(
[id] => 3
[name] => Daniël
)
[2] => Array
(
[id] => 4
[name] => Hendrik
)
[3] => Array
(
[id] => 1
[name] => Niels
)
)
Wat doet nu precies [php]usort[/php] ? 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 [php]usort[/php] dus de functie 'arraySort(..)' uit. In die functie wordt gebruik gemaakt van de functie [php]strcmp[/php]. Die doet eigenlijk niets anders dan een binaire string vergelijken. [php]usort[/php] 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:
<?php
function comparison($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
?>
Wat je ook kan doen is de functie schrijven als een closure. (Zie hier voor meer informatie)
<?php
$jouwArray = array(); // Je huidige gevulde multi-array
uasort($jouwArray, function ($a, $b)
{
return strcmp($a['name'], $b['name']);
});
?>
Andere mogelijkheden? Bekijk de volgende links eens:
- [php]uasort[/php]
- [php]uksort[/php]
- [php]array_multisort[/php]
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!
Reacties
0