проверьте ввод строки чтения (CLI) внутри для цикла

#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