luckyluke
Goto Top

Doppelte Werte aus mehrdimensionalen Array entfernen

Hallo liebe PHP'ler,

stehe vor einem Problem und komme nicht weiter. Ich habe ein mehrdimensionales Array, dass ich mit foreach auslese, siehe hier:

if(isset($_POST['abinhalt']))  
{	 
 foreach ($_POST['abinhalt'] as $kindid => $prdkindid)   
 {  												
  foreach ($prdkindid as $zusatzid => $option) 
  { 
   $produktids = array_unique($option);	// Doppelte Werte werden hier auf eins reduziert.	
   foreach ($produktids as $optionid => $kindbenamung)
   {  	 									
    foreach ($kindbenamung as $kind => $zusatzbenamung)
    {  									
      foreach ($zusatzbenamung as $zusatz => $optionbenamung)
      {  								
        foreach ($optionbenamung as $option => $kindabinhalte)
       {  													  
         echo 'Kindid: '.$kindid.' <br /> ';  
         echo 'Zusatzid: '.$zusatzid.' <br /> ';  
         echo 'Optionid: '.$optionid.' <br /> ';  
         echo 'Produkt: '.$kind.' <br /> ';  
         echo 'Zusatz: '.$zusatz.' <br /> ';  
         echo 'Option: '.$option.' <br /> ';  
       }
      }
     }
    }
   }
  }
}

In diesem Array sind Produkte enthalten, die mit KINDID's gespeichert sind. Diese kommen mehrfach vor. Mit array_unique fange ich diese auch ab und lasse doppelte Produkte nur einmal ausgeben.
Mein Problem ist jetzt aber, dass das array-unique anscheinend auf alle unter-arrays greift, d.h.: Ein Produkt mit seinen verschiedenen Optionen $option wird auch nur einmal ausgegeben mit der ersten ausgewählten Option-ID. Das ist so nicht richtig: Es soll oben nur einmal das Produkt stehen und unten drunter alle ausgewählten Optionen erscheinen. Deshalb der Grund für das array_unique.

Hat einer einen Tipp wie ich hier zu meiner Lösung komme?


Grüße, Lucky.

Content-Key: 134291

Url: https://administrator.de/contentid/134291

Printed on: April 27, 2024 at 02:04 o'clock

Member: bytecounter
bytecounter Jan 26, 2010 at 08:29:32 (UTC)
Goto Top
Hallo,

erstmal ist m. E. array_unique() nicht für mehrdimensionale Arrays gedacht, d. h. du hast den falschen Ansatz. Denke, dass du dir für dein Problem eine array_map() Funktion schreiben musst und das Ganze "manuell" machen.

vg
Bytecounter