如何在 php 中读取两个中间带有 space 的整数?

How to read two integer with a space in between, in php?

我正在尝试读取如下所示的整数,

6
1
2 5
2 7
2 9
1
1

我想读取一个整数,它跟在数字 2 之后,中间有 space。但我无法阅读它。我试过如下。

$i = 0;
while($i<10){
    fscanf(STDIN, "%d %d", $arr[$i]);
    // I have tried fscanf(STDIN, "%d\t%d", $arr[$i]); this too.
    $i++;
}

print_r($arr);

输出为:

[0] => 6
[1] => 1
[2] => 2
[3] => 2
[4] => 2
[5] => 1
[6] => 1

但我的预期输出是:

[0] => 6
[1] => 1
[2] => 2
[3] => 5
[4] => 2
[5] => 7
[6] => 2
[7] => 9
[8] => 1
[9] => 1

我也试过下面的方法也不行。

while(fgets(STDIN)){
    echo $i++;
    echo "line: $f";
}

读取两个输入时必须添加两个变量

$handle = fopen('users.txt', "r");

$i = 0;
$result = array();
while($i<10){
    fscanf($handle, "%d\t%d",$arr[$i],$arr1[$i] );
    $counter = count($result);
    $result[$counter] =$arr[$i];
    if(!empty($arr1[$i])){
        $counter = count($result);
        $result[$counter] =$arr1[$i];
    }
    $i++;
}

echo "<pre>"; print_r($result); 

users.txt 文件包含

6
1
2 5
2 7
2 9
1
1

另一种在 运行 时间获取输入的方法。

$arr = array();
$i = 0;
while($i<20){
    fscanf(STDIN, "%d\t%d",$arr[],$arr[]);
    $i++;
}
print_r(array_filter($arr));

希望这对从运行时获取输入值有用。

在上面的输出中跳过白色 space 的更简洁的方法是

while($array = fscanf(STDIN, "%d\t%d")){
    //fscanf(STDIN, "%d %d",$arr[],$arr[]);
    //$i++;
    list($var1,$var2) = $array;
    echo $var1;
    echo $var2;
}

输出:

6125272911