Array zusammenfassen


#1
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
#2
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
#3
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
 

Neue Beiträge