Использование более одного цикла является пустой тратой вычислительной мощности, поскольку оно будет выполнять ненужные / бесполезные итерации.Для каждой игры вы будете определять одно случайное число, которое ваш игрок будет «работать».Используйте один цикл с простым вычитанием, чтобы определить все правильные ответы.Не используйте грубую силу, если вы собираетесь каждый раз генерировать этот массив поиска; использовать один цикл и математическую логику .(Реально, вы можете / должны просто жестко закодировать весь массив поиска без заметной потери памяти; я предполагаю, что это академическая / личная проблема кодирования.)
Код: ( Демо )
$random_target = rand(1,18);
echo "Find all two digit numbers whose individual digits add up to: " , $random_target , "\n\n";
for ($x = 1; $x < 10; ++$x) { // the tens digit
if (($diff = $random_target - $x) >= 0 && $diff < 10 ) { // if ones digit is only "1 digit" it qualifies
$result[] = "$x$diff";
}
}
var_export($result);
Возможный вывод:
Найти все двузначные числа, отдельные цифры которых составляют: 13
array (
0 => '49',
1 => '58',
2 => '67',
3 => '76',
4 => '85',
5 => '94',
)
пс. Если вы хотите построитьполный массив поиска, используйте бережливую технику @ Don'tPanic (без лишних итераций).Затем жестко закодируйте этот результат в вашем скрипте - больше не нужно генерировать правильные результаты.
for ($x = 1; $x <= 9; ++$x) {
for ($y = 0; $y <= 9; ++$y) {
$result[$x + $y][] = "$x$y";
}
}
var_export($result);