2016-09-20 9 views
0

要素キーを識別子として使用する必要があることが判明し、次の苦境に遭遇しました。PHPのwhile()で配列をマージする

私はファイルを読み込み、ファイル名を抽出して処理するために解析しています。私は、ファイル内のすべての行をループしていたように、私は正規表現のすべての試合のための新しい配列作成しています。このように

$file = fopen('/home/user/log.txt', 'r'); 

if ($file) { 
    while (($line = fgets($file)) !== false) { 
    if (preg_match('~^/[^:]+~m', $line, $files)) { //match everything until the first ':' to get file names 
     var_dump($files); 
    } 
    } 
} 

を、私が取得:

array (size=1) 
    0 => string '/home/user/whatever.php' (length=23) 
array (size=1) 
    0 => string '/home/user/run.php' (length=18) 
array (size=1) 
    0 => string '/home/user/sth.php' (length=18) 

は私がマージしたいですそれらはすべて異なるキーを持つように1つの配列にまとめられています。これはこのシナリオで達成できますか、またはループを書き直すことに同意する必要がありますか?

+0

ちょうどそしてちょうど理由だけ言ってカウンターを追加しない結果 – Ghost

+0

のインデックスゼロを選択し、新しいコンテナに割り当て$ j、それからちょうどif(preg_match( '〜^/[^:] +〜m'、$ line、$ files [$ j])) – DCR

答えて

1

あなたループとして配列に追加する代わりに、このような何かを実行します。

$file = fopen('/home/user/log.txt', 'r'); 
$array = []; 

if ($file) { 
    while (($line = fgets($file)) !== false) 
    { 
    if (preg_match('~^/[^:]+~m', $line, $files)) 
    { //match everything until the first ':' to get file names 
     array_push($array, $files); 
    } 
    } 
} 

var_dump($array); 
+1

はい、私はそれについて考えませんでした。期待どおりに動作します。あなたの時間と答えをありがとう。できるだけ早くそれを受け入れます。 – McJohnson

関連する問題