2010-11-24 68 views
0

我在PHP 2個陣列看起來是這樣的:如何從PHP中第二個數組的值中統計一個數組中出現的次數?

$rows = array(11,12,14,14,11,13,12,11); 
$cols = array(1,2,1,2,2,2,1,1); 

我需要這些陣列中,告訴多少每個$cols值在每個$rows值的方式結合起來。

所以我的結果應該是這個樣子:

Array 
(
    [0] => Array 
     (
      [row] => 11 
      [1] => 2 //the count of 1 cols for 11 
      [2] => 1 //the count of 2 cols for 11 
     ) 

    [1] => Array 
     (
      [row] => 12 
      [1] => 1 
      [2] => 1 
     ) 

    ... 
) 

$行的值和$的cols將改變基於用戶輸入,他們甚至有可能是字符串。

澄清:

的重複值來自數據。考慮調查結果或測試問題。所以,問題11有2人回答1和1人回答2

問:

如何計算的$的cols出現在$行數和結果添加到一個多維數組?

回答

0

我想通了。這並不像我第一次想到的那麼複雜。只需要一個函數來計算總和。也許它可能是更有效的,我喜歡上的任何想法,但在這裏它是:

$rowColumns = array(); 

      for($i=0;$i<=$count-1;$i++) 
      { 
       $currentRow = $rows[$i]; 
       $currentCol = $cols[$i]; 

       //count occurences of columns in row 
       $colSum = $this->getColumnOccurences($count,$rows,$cols,$currentRow,$currentCol); 

       $rowColumns[$currentRow][$currentCol] = $colSum; 
      } 

private function getColumnOccurences($count,$rows,$cols,$rowValue,$colValue) 
    { 
     $retValue = 0; 

     for($i=0;$i<=$count-1;$i++) 
     { 
      if($rows[$i] == $rowValue && $cols[$i] == $colValue) 
      { 
       $retValue = $retValue + 1; 
      } 
     } 

     return $retValue; 
    } 

結果是:

Array ( 
     [11] => Array ([1] => 2 [2] => 1) 
     [12] => Array ([1] => 1 [2] => 1) 
     [13] => Array ([2] => 1) 
     [14] => Array ([1] => 1 [2] => 1) 
    ) 
1

結賬array_intersect()。使用它來獲取相同的值,並在結果數組上執行count()。

+0

是的!然後數一數 – Tobias 2010-11-24 15:10:12

相關問題