Das wird häufig in Foren und Boards eingesetzt um den Teilnehmern je nach Anzahl der Beiträge unterschiedliche Bezeichnungen zuzuweisen.
Diese Aufgabenstellung lässt sich sehr einfach über eine While-Schleife lösen.
Je nachdem welcher Fall der häufigere ist sollte man die aufsteigend oder die absteigend geordnete Variante wählen.
Im Kopf der While-Schleife wird hier die "lazy evaluation" ausgenutzt um mehrere mit AND verbundene Anweisungen auszuführen bis eine dieser Anweisungen false zurückliefert.
Daher kommt man hier mit einem leeren While-Rumpf aus.
Es ist allerdings unter dem Gesichtspunkt der Nachvollziehbarkeit des Codes diskussionswürdig ob man hier nicht doch lieber eine gesprächige Variante wählen sollte.
<?php
// Rangliste
// je nach Punktestand eine bestimmte Bezeichnung zuweisen
// Bsp. 1) absteigend geordnet ...
$rank = array();
$rank[500] = 'Medizinmann';
$rank[200] = 'Oberhäuptling';
$rank[100] = 'Häuptling';
$rank[50] = 'Unterhäuptling';
$rank[20] = 'Indianer';
$rank[10] = 'Halbstarker';
$n = 121;
while ( ($level = current($rank)) && key($rank) > $n && next($rank) ){}
printf ('<em>%d</em> =><strong>%s</strong><br />',$n, $level);
// Bsp. 2) aufsteigend geordnet ...
$rank = array();
$rank[10] = 'Halbstarker';
$rank[20] = 'Indianer';
$rank[50] = 'Unterhäuptling';
$rank[100] = 'Häuptling';
$rank[200] = 'Oberhäuptling';
$rank[500] = 'Medizinmann';
while ( ($level = current($rank)) && next($rank) && key($rank) <= $n ){}
printf ('<em>%d</em> =><strong>%s</strong><br />',$n, $level);
?>