在 for 循环中验证 readline 输入 (CLI)

validate readline input (CLI) inside for loop

循环上面的输入验证工作正常,但在循环中不起作用。 输入不应允许:字符串和负数。执行此操作的任何解决方法或仅使用内部循环都行不通吗? 是的,我知道可以通过其他方式检查最大输入数,但我对“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";

为什么要在循环中检查 $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)