Учитывая определение Армстронга Чисел , функциональное решение является более кратким и немного более понятным для меня
function isArmstrongNumber($number) {
$digits=str_split($number); // create an array containing the digit into the
$result = array_sum(
array_map(
function($x){return $x*$x*$x;},
$digit
)
);
return $number == $result;
}
Оказывается, что предыдущее определение было верным для числа трехцифры. общее определение приводит к незначительной другой функции:
function isArmstrongNumber($number) {
$digits=str_split($number); // create an array containing the single digits
$power= count($digits); // the power every digit has to be raised to
$result = array_sum(
array_map('pow', $digits, array_fill(0,$power,$power))
);
return $number == $result;
}
Вы можете использовать код следующим образом:
$candidate = 153;
if(isArmstrongNumber($candidate) {
/* armstrong number */
echo $candidate, ' is an Armstrong number.';
} else {
/* not armstrong number */
echo $candidate, ' is not an Armstrong number.';
}