Не знаю, чем не понравился while, с ним проблемы будут только если в xml-ке косяки и элементы не сортированные будут (экстремальные границы вроде как проверил). На всякий случай подправим еще
getPlayerExperienceTable()
PHP код:
private static function getPlayerExperienceTable() {
if (sizeof(self::$playerExperienceTable) == 0) {
$xml = simplexml_load_file(realpath(dirname(__FILE__)) . '/' . self::PLAYER_EXPERIENCE_TABLE_FILE);
foreach ($xml->exp as $key => $value) {
self::$playerExperienceTable[] = $value;
}
sort(self::$playerExperienceTable);
}
return self::$playerExperienceTable;
}
C if-elseif-elseif согласен, лишки много, так красивее.
PHP код:
$iMin = 1;
$iMid = 0;
$iMax = $maxLevel;
while (($iMax - $iMin) > 1) {
$iMid = ($iMin + $iMax) >> 1;
if ($experience >= $expList[$iMid]) {
$iMin = $iMid + 1;
} else {
$iMax = $iMid - 1;
}
}