2016-12-02 5 views
3

例で満たされた配列:PHP - STDIN整数入力

$_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 
) 

の後整数入力からスペースを削除するための任意の方法があります。アレイにそれぞれ入りますか? 入力全体が1つの単一の行にならないようにする方法です。

は、私は2番目の行があるとき$input[] = explode(' ', trim(fgets($_fp)));は今それが唯一の偉大な使用は、ここでは、エコーの罰金です である私はすべての行を読んで、

while($f = fgets(STDIN)){ echo "line: $f"; }変数の入力にそれらを配置する必要がありSTDINの最初の行を置く使用しましたすべての行しかし

答えて

1

利用トリムの「\ n」を削除..私は私が変数として2行が必要と配列として休むarray_push()必要があるためかどうかわからない...変数や配列、まだ各ラインを割り当てるカント行を使用すると、それを配列に変換するために爆発的に使用されます。

Live Demo

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

あなたはより多くのラインを持っている場合、下記の使用:

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

その作品! $ input [0]の代わりに$ inputを通して値にアクセスするのが効率的です。 print_r($ input); アレイ ( [0] =>配列 ( [0] => 4 [1] => 7 [2] => 6 [3] => 24 [4] => 1 ) ) たとえば、$ sum = array_sum($ input); = // 0 –

+0

私は2つのバージョンを提供しています。 –

+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);