PHP - 用标准输入的整数填充数组

3

示例:

$_fp = fopen("file.txt", "r");
/* STDIN = "4 7 6 24 1"; */ <== user input

$input[] = fgets($_fp);
print_r($input);

输出:

Array
(
    [0] => 4 7 6 24 1
)

期望输出:

Array
(
    [0] => 4
    [1] => 7
    [2] => 6
    [3] => 24
    [4] => 1
)

有没有办法在将每个整数输入到数组后从中删除空格?以避免整个输入作为单行出现。
我使用了 $input[] = explode(' ', trim(fgets($_fp))); 现在当有第二行时,它只放置 STDIN 的第一行,我需要读取所有行并将它们放入输入变量中。 while($f = fgets(STDIN)){ echo "line: $f"; } 在这里非常有用 它可以很好地回显所有行,但是尚不能将每行分配给变量或数组。不确定是否应该使用 array_push(),因为我需要将 2 行作为变量,并将其余的行作为数组。
2个回答

1
即使我们使用正则表达式的 preg_match_all 函数,也可以在所有情况下得到相同的结果,例如如果您有双空格或整数字符串之间的任何文本。
$string = "4   7  6  24 1";
$string = "4 test df 7 6 24 1"; 
$string = "4 7 6 24 1";
preg_match_all('!\d+!', $string, $matches);

print_r($matches);

1
使用 trim 函数去除行中的 "\n",然后使用 explode 函数将其转换为数组。

演示现场

$input = explode(' ', trim(fgets($_fp)));

如果你有更多的行,请使用以下内容:
$input[] = explode(' ', trim(fgets($_fp)));

它能工作!但是通过 $input 访问值是否比 $input[0] 更有效率,因为 print_r($input) 的输出结果如下: Array ( [0] => Array ( [0] => 4 [1] => 7 [2] => 6 [3] => 24 [4] => 1 )) 例如 $sum = array_sum($input); = // 0 - mohamed tebry
我给你两个版本,如果你只有一行,请使用第一个。 - LF00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接