Array zusammenfassen


BocaSpanky

Mitglied
Hi,

folgendes Array habe ich:
PHP:
Array
(
   [0] => Array
       (
           [zweck] => 23
           [kw] => 1
       )

   [1] => Array
       (
           [zweck] => 15
           [kw] => 1
       )

   [2] => Array
       (
           [zweck] => 15
           [kw] => 1
       )

   [3] => Array
       (
           [zweck] => 14
           [kw] => 1
       )

   [4] => Array
       (
           [zweck] => 14
           [kw] => 1
       )

   [5] => Array
       (
           [zweck] => 15
           [kw] => 1
       )

   [6] => Array
       (
           [zweck] => 15
           [kw] => 1
       )

   [7] => Array
       (
           [zweck] => 15
           [kw] => 1
       )

   [8] => Array
       (
           [zweck] => 15
           [kw] => 1
       )
)
Jetzt würd ich gern die Entrys so zusammenfassen das alle gleichen zusammen sind, so ungefähr:

PHP:
Array
(
   [kw1] => Array
       (
           [zweck] => 15
           [count] => 6
       )
   [kw1] => Array
       (
           [zweck] => 14
           [count] => 2
       )
   [kw1] => Array
       (
           [zweck] => 23
           [count] => 1
       )
)
Ich hoffe es ist einigermaßen verständlich. Danke fürs auf die Sprünge helfen.
 

Loveboat

Erfahrenes Mitglied
Hallo BocaSpanky,

Dein Ergebnis wird so nicht ganz funktionieren. In einem Array kann ein Index nur einmal verwendet werden. Bei Dir wäre das Ergebnis dann:

PHP:
   [kw1] => Array
       (
           [zweck] => 23
           [count] => 1
       )
Die vorherigen Einträge wären überschrieben.


Warum machst Du das dann nicht so?
PHP:
   [kw1] => Array
       (
           "15" => 6
           "14" => 2
           "23" => 1
       )
Dann hättest DU Deine KW, Zweck und Counter mit drin.

Gruß
Loveboat
 

Loveboat

Erfahrenes Mitglied
Hier ein kleiner Schnipsel...

PHP:
$info = array(

    "0" => array(
        "zweck" => 23,
        "kw" => 1
    ),

    "1" => array(
        "zweck" => 15,
        "kw" => 1
    ),

    "2" => array(
        "zweck" => 15,
        "kw" => 1
    ),

    "3" => array(
        "zweck" => 14,
        "kw" => 1
    ),

    "4" => array(
        "zweck" => 14,
        "kw" => 1
    ),
  
    "5" => array(
        "zweck" => 15,
        "kw" => 1
    ),

    "6" => array(
        "zweck" => 15,
        "kw" => 1
    ),

    "7" => array(
        "zweck" => 15,
        "kw" => 1
    ),

    "8" => array(
        "zweck" => 15,
        "kw" => 1
    )
);


$new_info = array();

foreach($info as $value) {
    if(!isset($new_info["kw".$value["kw"]][$value["zweck"]])) {
        $new_info["kw".$value["kw"]][$value["zweck"]] = 1;
    }
    else {
        $new_info["kw".$value["kw"]][$value["zweck"]]++;
    }
}

ksort($new_info);
var_dump($new_info);

Ergebnis:
PHP:
array (size=1)
  'kw1' =>
   array (size=3)
     23 => int 1
     15 => int 6
     14 => int 2

Und sollte die KW eine andere Zahl haben, hier das Beispiel-Ergebnis:
PHP:
array (size=3)
  'kw1' =>
   array (size=3)
     23 => int 1
     15 => int 5
     14 => int 1
  'kw2' =>
   array (size=1)
     14 => int 1
  'kw3' =>
   array (size=1)
     15 => int 1