Forum und email

array_multisort

(PHP 4, PHP 5)

array_multisort — Sorteer meerdere of multi-dimensionale arrays

Beschrijving

bool array_multisort ( array $ar1 [, mixed $arg [, mixed $... [, array $... ]]] )

array_multisort() kan worden gebruikt om enkele arrays in een keer te sorteren of een multi-dimensionale array via een of meerdere dimensies. Key associaties worden gehandhaafd tijdens het sorteren.

De input arrays worden behandeld als kolommen van een tabel die moet worden gesorteerd op rijen - het lijkt op de functionaliteit van een SQL ORDER BY clause. De eerste array is degene waarop primair wordt gesorteerd. De rijen (waarden) in die array die in de vergelijking gelijk zijn worden gesorteerd op de volgende input array, en zo verder.

De argument-structuur van deze functie is enigszins ongebruikelijk, maar flexibel. Het allereerste argument moet een array zijn. Daarna kan ieder argument of een array zijn of een sorteer flag van een van de volgende lijsten.

Sorteervolgorde:

  • SORT_ASC - sorteer in oplopende volgorde
  • SORT_DESC - sorteer in aflopende volgorde

Sorteertypen:

  • SORT_REGULAR - vergelijk items normaal
  • SORT_NUMERIC - vergelijk items numeriek
  • SORT_STRING - vergelijk items als string

Er mogen geen twee sorteer-flags van hetzelfde type worden meegegeven na elke array. De sorteer-flags die worden meegegeven na een array argument gelden alleen die array - ze worden teruggezet naar default SORT_ASC en SORT_REGULAR voor elk nieuw array element.

Geeft TRUE terug bij succes, FALSE indien er een fout is opgetreden.

Example#1 Meerdere arrays sorteren

$ar1 = array ("10", 100, 100, "a");
$ar2 = array (1, 3, "2", 1);
array_multisort ($ar1, $ar2);

In dit voorbeeld zal de eerste array na het sorteren 10, "a", 100, 100 bevatten. De tweede array zal 1, 1, "2", 3 bevatten. De waarden in de tweede array die corresponderen met de identieke waarden in de eerste array werden ook gesorteerd.

Example#2 Een multi-dimensionale array sorteren

$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
array_multisort ($ar[0], SORT_ASC, SORT_STRING,
                 $ar[1], SORT_NUMERIC, SORT_DESC);

In dit voorbeeld zal de eerste array na het sorteren 10, 100, 100, "a" bevatten (hij werd gesorteerd als strings in oplopende volgorde), en de tweede zal 1, 3, "2", 1 (gesorteerd als getallen, in aflopende volgorde) bevatten.