2016-12-02 27 views
3

实施例:PHP - 阵列填充有标准输入整数输入

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

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

OUTPUT:

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

期望的输出:

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

是否有任何后除去从整数输入空格方法输入每个数组? 以避免将整个输入作为单一行的方式。

我用$input[] = explode(' ', trim(fgets($_fp)));现在,当有第二行只把标准输入的第一行,我需要阅读所有线路,并把它们放入输入变量

while($f = fgets(STDIN)){ echo "line: $f"; }是伟大的使用在这里 这是很好的回响所有行不能分配给每个线到一个变量或数组还..不知道如果我要array_push()因为我需要2线作为变量和休息作为阵列..

回答

1

使用修整去除的所述“\ n”个行,使用爆炸将其转换为数组。

Live Demo

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

,如果你有更多的线路,下面用:

$input[] = explode(' ', trim(fgets($_fp))); 
+0

它的作品!但是通过$ input而不是$ input [0]访问值是有效的,因为。的print_r($输入); 阵列 ( [0] =>数组 ( [0] => 4 [1] => 7 [2] => 6 [3] => 24 [4] => 1 ) ) 例如$ sum = array_sum($ input); = // 0 –

+0

我给你两个版本,如果你只有一行,请使用第一个。 –

+0

数组具有非常高的性能访问元素 –

1

甚至我们可以用至REGx 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);