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