在PHP控制台中读取以空格分隔的整数

时间:2018-09-27 09:42:58

标签: php

我正在用php编写一个控制台应用程序,用户将在其中输入一些整数值。

样本输入-21 5 2

为了读取此值,我正在使用

fscanf(STDIN, "%d\n", $a);
fscanf(STDIN, "%d\n", $b);
fscanf(STDIN, "%d\n", $c);

但是该值仅分配给变量a。如何读取对应变量中的所有变量。

注意:不能在不同的行中输入整数。

1 个答案:

答案 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