#php #console.readline
Вопрос:
Проверка ввода над циклом работает просто отлично, но не работает в цикле. Ввод не должен допускать: строковые и отрицательные числа. Любой обходной путь для этого или просто использование внутреннего цикла не подходит? Да, я знаю, что максимальное введенное число можно проверить другими способами, но меня интересует этот конкретный случай с «циклом for».
$amount = readline("Enter amount of inputs: ");
if (!is_numeric($amount) || !(0 < $amount)){
echo "Invalid input";
exit;
}
$numbers = [];
for ($i = 1; $i <= $amount; $i ){
$numbers[] = readline("Input number {$i}: ");
if (!is_numeric($amount) || !(0 < $amount)){
echo "Invalid input";
exit;
}
}
$largestNumbers = max($numbers);
$numbersList = implode(",", $numbers);
echo "The largest number of $numbersList is $largestNumbers";
Ответ №1:
Почему вы проверяете $amount
в цикле, в который вы вчитываетесь $numbers
? И поскольку вы читаете в массив, вам нужно будет указать индекс:
for ($i = 1; $i <= $amount; $i ){
$numbers[$i] = readline("Input number {$i}: ");
if (!is_numeric($numbers[$i]) || !(0 < $numbers[$i])){
echo "Invalid input";
exit;
}
}
Я мог бы использовать ($numbers[$i] <= 0)
вместо этого.
Комментарии:
1. Ах, извините, это
$amount
была ошибка копирования и вставки перед публикацией, но[i]
это хорошо, thnx