我正在用 php 编写一个控制台应用程序,用户将在其中输入一些整数值。
样本输入 - 21 5 2
为了读取这个值,我正在使用
fscanf(STDIN, "%d\n", $a);
fscanf(STDIN, "%d\n", $b);
fscanf(STDIN, "%d\n", $c);
Run Code Online (Sandbox Code Playgroud)
但该值仅在变量 a 上分配。如何读取相应变量中的所有变量。
注意:整数不能在不同的行中输入。
您可以使用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));
Run Code Online (Sandbox Code Playgroud)
如果您需要有关格式字符串的更多信息,您可能需要查看sprintf的php 文档
如果您想解析的不仅仅是几个数字甚至是可变数量,您只能将两个参数传递给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");
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
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
Run Code Online (Sandbox Code Playgroud)