2010-11-24 5 views
0

Ich habe 2 Arrays in PHP, die etwa wie folgt aussehen:Wie kann die Anzahl der Vorkommen in einem Array von den Werten eines zweiten Arrays in PHP gezählt werden?

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

Ich brauche diese Arrays in einer Art und Weise zu kombinieren, wie viele von jedem $cols Wert sagt in jedem $rows Wert ist.

So sollte mein Ergebnis in etwa so aussehen:

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 
     ) 

    ... 
) 

Die Werte von $ Reihen und $ cols wird von dem Benutzer Eingabe basierend ändern, können sie sogar Strings sein.

Klarstellung:

Die Duplikate Werte stammen aus den Daten. Denken Sie an Umfrageergebnisse oder an Testfragen. So Frage 11 hatte 2 Personen Antwort 1 und 1 Person Antwort 2.

Frage:

Wie zähle ich die Anzahl der Vorkommen von $ cols in $ rows und die Ergebnisse in einem mehrdimensionalen Array hinzufügen?

Antwort

0

Ich fand es heraus. Es war nicht so kompliziert wie ich zuerst dachte. Benötigte nur eine Funktion, um die Summe zu berechnen. Vielleicht könnte es effizienter sein, würde ich eine Idee, dass Liebe, aber hier ist es:

$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; 
    } 

Das Ergebnis ist:

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

Auschecken array_intersect(). Verwenden Sie es, um die gleichen Werte zu erhalten, und führen Sie eine Zählung() für das resultierende Array durch.

+0

ja! und dann zähle das – Tobias

+0

-1 Das tut nicht, was ich brauche. Die Werte der beiden Arrays hängen von der Reihenfolge ab - nicht von den Werten. Dies würde ein leeres Array zurückgeben. –

Verwandte Themen