<?php
function getLevel($base, $root = 3.0) {
$exact = pow($base, 1.0 / $root);
if (pow($exact, $root) == $base) { return $exact; } if (pow($ceil, $root) == $base) { return $ceil; } if (pow($floor, $root) == $base) { return $floor; }
// No integer root
return FALSE;
}
var_dump(getLevel
(1, 3)); // Should always return 1 var_dump(getLevel
(1, 99)); // Should always return 1
var_dump(getLevel
(7)); // Has no integer 3rd root
PD9waHAKCmZ1bmN0aW9uIGdldExldmVsKCRiYXNlLCAkcm9vdCA9IDMuMCkgewogICAgJGV4YWN0ID0gcG93KCRiYXNlLCAxLjAgLyAkcm9vdCk7CiAgICAkY2VpbCAgPSBjZWlsKCRleGFjdCk7CiAgICAkZmxvb3IgPSBmbG9vcigkZXhhY3QpOwogICAgCiAgICBpZiAocG93KCRleGFjdCwgJHJvb3QpID09ICRiYXNlKSB7IHJldHVybiAkZXhhY3Q7IH0KICAgIGlmIChwb3coJGNlaWwsICAkcm9vdCkgPT0gJGJhc2UpIHsgcmV0dXJuICRjZWlsOyAgfQogICAgaWYgKHBvdygkZmxvb3IsICRyb290KSA9PSAkYmFzZSkgeyByZXR1cm4gJGZsb29yOyB9CiAgICAKICAgIC8vIE5vIGludGVnZXIgcm9vdAogICAgcmV0dXJuIEZBTFNFOwp9Cgp2YXJfZHVtcChnZXRMZXZlbCgxMDY0OCwgMykpOyAvLyAyMl4zCnZhcl9kdW1wKGdldExldmVsKDE2ODA3LCA1KSk7IC8vICA3XjUKCnZhcl9kdW1wKGdldExldmVsKDEsICAzKSk7IC8vIFNob3VsZCBhbHdheXMgcmV0dXJuIDEKdmFyX2R1bXAoZ2V0TGV2ZWwoMSwgOTkpKTsgLy8gU2hvdWxkIGFsd2F5cyByZXR1cm4gMQoKdmFyX2R1bXAoZ2V0TGV2ZWwoNykpOyAvLyBIYXMgbm8gaW50ZWdlciAzcmQgcm9vdAo=