2016-12-02 56 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);