首页 > 解决方案 > 在 for 循环中验证 readline 输入 (CLI)

问题描述

循环上面的输入验证工作得很好,但不能循环工作。输入不应允许:字符串和负数。任何解决方法都可以做到这一点,或者只是使用内部循环不可行?是的,我知道可以通过其他方式检查最大输入数,但我对“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";

标签: phpconsole.readline

解决方案


你为什么要检查$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)改用。


推荐阅读