Я разработал следующий код, чтобы узнать все числа armstrong от 100 до 1000, но по какой-то причине не ведет себя так, как ожидалось.PHP вложенная петля Ошибка
for($i=99;$i<1000;$i++){
$x = str_split($i);
$arm = 0;
foreach ($x as $n){
$arm = $arm + pow($n,3);
if ($arm == $i){
echo $i."\n";
}
}
}
код проверяет значение $ я против значения $ руки, если он соответствует, он печатает $ я. Это означает, что $ i является номером armstrong. выход следующий.
153
370
370
371
407
По какой-то причине печати в два раз 370, но в соответствии с первым контуром $ я буду иметь место только после того, как значения 370. Так почему им я получаю в два раза 370 ???
Заранее благодарим за любую помощь.
Потому что '370' вы делаете: '3^3 + 7^3', который уже равен' 370', и вы печатаете номер в вашем цикле foreach. Но добавление '0^3' в' 370' в следующей и последней итерации по-прежнему равно '370', и вы снова выводите номер. – Rizier123
Да. В основном вам нужно переместить 'if' в _after_ внутренний цикл. –