2012-12-03 43 views
0

我從數據庫中提取一些數據,然後將它們推送到數組。我需要找到一些字符串的計數並以有效的方式打印出結果(計數):在數組中查找並獲得每個字符串的計數

Array 
(
    [0] => q1-1,q2-2,q3-2,q4-1,q5-2,q6-3,q7-1,q8-4, 
    [1] => q1-1,q2-2,q3-1,q4-3,q5-3,q6-3,q7-2,q8-1, 
    [2] => q1-1,q2-1,q3-1,q4-1,q5-1,q6-2,q7-2,q8-2, 
    [3] => q1-3,q2-1,q3-1,q4-1,q5-2,q6-3,q7-1,q8-1, 
    [4] => q1-2,q2-2,q3-3,q4-1,q5-3,q6-3,q7-1,q8-1, 
    [5] => q1-1,q2-2,q3-3,q4-1,q5-2,q6-3,q7-1,q8-1, 
    [6] => q1-3,q2-1,q3-1,q4-3,q5-2,q6-3,q7-2,q8-4, 
    [7] => q1-2,q2-2,q3-3,q4-1,q5-2,q6-5,q7-1,q8-1, 
    [8] => q1-1,q2-1,q3-2,q4-3,q5-3,q6-5,q7-1,q8-1, 
    [9] => q1-2,q2-1,q3-1,q4-1,q5-3,q6-3,q7-1,q8-1, 
    [10] => q1-3,q2-2,q3-3,q4-3,q5-4,q6-3,q7-1,q8-1, 
    ... 
) 

樣本數據在上面。

我需要知道q1-1,q1-2 ... q8-4在陣列中有多少次出現,並打印出可讀的版本。防爆。是23:q1-1,412:q1-2等等。

我打算創建一個數組,每個字符串需要遍歷整個數組。對於每個結果增量resultVariable該字符串,但我不知道這是否是最好的方法。

對此提出建議?

+0

對於初始數據庫查詢,這樣做會不夠乾淨嗎? – diggersworld

+0

我想說,數組示例沒有在php中實現一個有效的數組。 – arkascha

回答

2

很簡單,循環陣列上,創建子陣列,並創建一個計數器陣列:

$counts = array() ; 
foreach ($your_array as $row) { 
    $sub = explode(',', $row); 
    foreach ($sub as $subval) { 
     if (array_key_exists ($subval, $counts)) { 
      $counts[$subval] ++ ; 
     } else { 
      $counts[$subval] = 1 ; 
     } 
    } 
} 

這裏是$counts

Array (
    'q1-1' => 23, 
    'q1-2' => 9, 
    // and so on.... 
); 
+0

這真的很好。謝謝! – ialphan

0

嘗試:

$arr = array(...); //your array 
$count = array();  
foreach($arr as $v) { 
$substr = explode(',', $v); 
foreach($substr as $m) { 
if(strstr($v, $m) !== FALSE) 
    $count[$m]++; 
}  
} 

印刷計數,

foreach($count as $k => $v) 
echo "Count for '$k': ". $v; 
+0

不是一個便攜式的解決方案,你將不得不手動測試任何'qx-x'的可能性。 – Ulflander

+0

哦,我沒有想到這一點,編輯我的答案。 –

+0

對不起,你的代碼看起來很奇怪: strstr($ v,$ substr)永遠都是真的! 並且您正在爲counts數組指定一個arry-typed鍵。 還是我錯了? – Ulflander

相關問題