我正在用php编写一个控制台应用程序,用户将在其中输入一些整数值。
样本输入-21 5 2
为了读取此值,我正在使用
fscanf(STDIN, "%d\n", $a);
fscanf(STDIN, "%d\n", $b);
fscanf(STDIN, "%d\n", $c);
但是该值仅分配给变量a。如何读取对应变量中的所有变量。
注意:不能在不同的行中输入整数。
答案 0 :(得分:2)
您可以使用fscanf(STDIN, "%d %d %d\n", $a, $b, $c);
。
示例:
<?php
$stdin = fopen('php://stdin', 'r');
print_r("Your 3 numbers:\n");
fscanf($stdin, "%d %d %d\n", $a, $b, $c);
print_r(sprintf('$a : %d $b : %d $c : %d' . "\n", $a, $b, $c));
如果您需要有关格式字符串的更多信息,则可能需要看看php documentation for sprintf
如果您想解析多个数字甚至是可变数量,则只能将两个参数传递给fscanf
。然后fscanf
返回一个包含所有已解析值的数组。
<?php
$stdin = fopen('php://stdin', 'r');
print_r("How many numbers do you want to enter? : ");
fscanf($stdin, "%d\n", $n);
print_r("Your ". $n . " numbers:\n");
$result = fscanf($stdin, str_repeat("%d ", $n). "\n");
print_r("I have parsed " . implode($result, ", ") . "\n");
输出看起来像这样:
How many numbers do you want to enter? : 10
Your 10 numbers:
1 1 2 3 5 8 13 21 34 55
I have parsed 1, 1, 2, 3, 5, 8, 13, 21, 34, 55