2012-11-04 53 views
0

我有以下並希望得到它的一些幫助:陣列 - 結合值加在一起

function Display($line) { 
    $section = split(" +", $line); 
    for ($i = 1; $i <4; $i+=1){ 
     $section[$i]; 
    }  

    $countsection = count($section[3]); 
    $name = "$section[1] $section[2]"; 
    print "<td>$name</td>\n"; 
    print "<td>$countsection</td>\n";  
    $endvalue = end($section);  
    print "$endvalue"; 
} 

$allvalues = file("filename.txt");  
foreach ($allvalues as $checkline) { 
    if (ereg("^[[:digit:]]", $checkline)) { 
     Display($checkline);   
    } 
} 

這裏有一個基本的破敗:

我想

  • $counsection$endvalue到被計數。所以$countsection內部的值需要加在​​一起,$endvalue.
  • $ name需要合併在一起,如果他們是相同的$名稱。

所以下面會是這個樣子:

Name | Count Section | End Value 
Mary Jane | 40 | 156 
Tom John | 30 | 60 

取而代之的是:

Name | Count Section | End Value 
Mary Jane | 10 | 50 
Mary Jane | 10 | 50 
Mary Jane | 20 | 56 
Tom John | 10 | 20 
Tom John | 15 | 30 
Tom John | 5 | 10 

文件內容示例:

12345 RM 100M 121  T  0400 1059 MWHA 110 Jane, Mary G 40 

12345 RM 100M 122  W 0600 1059 MWHA 310 Jane, Mary P  40 

12345 RM 100P 110 M W 0800 0929 CLOU 122 John, Tom 39 

12345 RM 100P 210 M W 0930 1059 CLOU 205 John, Tom 40 

在此先感謝。

+1

是你從數據庫中拉這些東西?如果是這樣,你可以在你的查詢中用'Name'和'SUM'對它們進行分組。只是一個想法.. –

+0

'var_dump($ allvalues)'看起來像什麼?它更好地知道你的'filename.txt'看起來像 – Baba

+0

不幸的是,它不是在一個數據庫,而是一個單一的文件 – Nina

回答

0

您可以嘗試

$allvalues = getValues("log.txt"); 
print("<table>"); 
foreach ($allvalues as $name => $value) { 
    print("</tr>"); 
    printf("<td>%s</td><td>%d</td><td>%d</td>", $name, $value[0], $value[1]); 
    print("</tr>"); 
} 
print("</table>"); 

輸出

<table> 
    <tr> 
     <td>Jane, Mary G</td> 
     <td>121</td> 
     <td>40</td> 
    </tr> 
    <tr> 
     <td>Jane, Mary P</td> 
     <td>122</td> 
     <td>40</td> 
    </tr> 
    <tr> 
     <td>John, Tom</td> 
     <td>320</td> 
     <td>79</td> 
    </tr> 
</table> 

Jane, Mary G  121   40 
Jane, Mary P  122   40 
John, Tom   320   79 

功能用於

function getValues($file) { 
    $lines = file($file); 
    $values = array(); 
    foreach ($lines as $line) { 
     $line = trim($line); 
     if (empty($line)) 
      continue; 
     $line = explode(" ", $line); 
     if (isset($values[$line[11]])) { 
      $values[$line[11]][0] += strstr($line[3], " "); 
      $values[$line[11]][1] += $line[13]; 
     } else { 
      $values[$line[11]] = array(strstr($line[3], " "),$line[13]); 
     } 
    } 
    return $values; 
} 
+0

嗨,巴巴,你能解釋$ values [$ line [11]] [0] + = strstr($ line [3],「」); $ values [$ line [11]] [1] + = $ line [13];作品? – Nina

+0

'$ a + = $ b'與'$ a = $ a + $ b'相同。當處理像$ a。= $ b' ='$ a = $ a這樣的字符串時,它也可以是串聯的。 $ b' – Baba

+0

[strstr](http://www.php.net/manual/en/function.strstr.php)查找第一個出現的字符串..我是第一次出現後尋找一個數字空間 – Baba