2012-05-10 18 views
0

我有這個文件,我想統計每個「ROBxx」的實例數。該文件可以包含數千行。什麼是循環低谷和數量的最簡單方法?循環trought文件和計數選定的實例

2012.05.08 11時15分49秒ROB524毫米

2012.05.08十一點15分56秒ROB425毫米

2012.05.08 11點15分59秒ROB304毫米

2012.05.08 11 :16:01 ROB524毫米

2012.05.08 11時16分04秒ROB422毫米

2012.05.08 11時16分05秒ROB064毫米

2012.05.08 11時16分06秒ROB524毫米

2012.05.08 11點十六分10秒ROB524毫米

2012.05.08 11時16分11秒ROB303毫米

該文件後結果計數應該是:

ROB52:4

ROB42:2

ROB30:2

ROB06:1

謝謝!

+0

谷歌的的preg_match()函數。 – bos

回答

0

首先,用String和整數創建一個2維數組(或列表或其他)。現在你可以遍歷每一行並執行以下操作:

剪掉「ROBxx」字符串並將其保存爲字符串。

檢查字符串的二維數組。如果你發現它,增加計數。如果尚未在陣列中,添加它並將計數設置爲1.

希望這有助於。

0
$string = file_get_contents(filename) 
$count = preg_match_all('/ROB[0-9]{2}/', $string, $aMatches); 
+0

噢 - 如果你不需要,可以「解除($ aMatches)」 - 釋放內存。如果它太大,也是「unset($ string)」。 – Robbie

1
$handle = fopen("input.txt", "r"); 
$hash = array(); 
if ($handle) { 
     while (($buffer = fgets($handle)) !== false) { 
       if(preg_match('/\b(ROB\d+)\b/',$buffer,$m)) { 
         $hash[$m[1]] = (isset($hash[$m[1]])?($hash[$m[1]]+1):1); 
       } 
     } 
     foreach($hash as $k=>$v) { 
       print "$k : $v\n"; 
     } 
} else { 
     // error openeing file. 
} 
+0

謝謝!但我也有一個secound標準來處理。在[]中的那些,我怎麼能先計算每個獨特的[]然後Xmm? 2012.04.27九點40分12秒\t \t ROB43 [3] \t3毫米 2012.04.27九時40分13秒\t \t ROB52 [3] \t3毫米 2012.04.27九點40分14秒\t \t ROB10 [3] \t 3毫米 2012.04.27 9點40分18秒\t \t ROB06 [15] 2012.04.27 9點40分21秒\t \t ROB42 [15] 2012.04.27 9時40分24秒\t \t ROB43 [3] \t3毫米 2012.04 .27 09:40:26 \t ROB42 \t [15] 2012.04。27 9時四十分28秒\t \t ROB43 [3] \t3毫米 2012.04.27九時40分31秒\t \t ROB10 [3] \t3毫米 2012.04.27 9時40分37秒\t \t ROB43 [3] 2012.04 \t3毫米 0.27 9點40分41秒\t \t ROB42 [15] 2012.04.27 9時40分42秒\t \t ROB10 [3] \t3毫米 2012.04.27九點四十分44秒\t \t ROB52 [4] \t4毫米 –