Array nach doppelten Werten durchsuchen

supercat1510

Erfahrenes Mitglied
Folgende Problematik:

Ich hab eine Exportierte CSV-Datei aus einem Warenwirtschaftssystem.
Da ist jetzt das Problem, das Produkte öfters auftauchen da verschiedene Größen vorhanden sind, die Artikelnummer ist jedoch immer gleich.

Beispiel (stark vereinfacht):
Code:
$test = array (  
     array( 
          shop = "1",
          artikelnummer = "12345",
          groesse = "36"
     ),
     array(
          shop = "1",
          artikelnummer = "12345",
          groesse = "37"
     ),
     array(
          shop = "1",
          artikelnummer = "12345",
          groesse = "38"
     ),
     array(
          shop = "1",
          artikelnummer = "abcdef",
          groesse = "37"
     ),
     array(
          shop = "1",
          artikelnummer = "abcdef",
          groesse = "38"
     ),

Das ganze muss jetzt in eine Datenbank eingetragen werden, allerdings nur 1 Eintrag pro Artikelnummer.

Hat jemand einen Denkanstoß für mich wie man das am besten realisieren kann.
 
Hallo,

wenn du dich an die Datenbanknormalformen halten willst, dann wirst du wohl mehrere Einträge auf deiner Datenbank erzeugen müssen (Atomarität).
Wenn dir das allerdings egal ist, so kannst du auch bei dem Datenbankfeld der Größe die ganzen Zahlen eintragen, z.B. per Kommata getrennt.

Gruß
BK
 
Die Grösse musst du fallen lassen (oder nachher in eine eigene Tabelle eintragen

PHP:
<?php 
$test = array (  
     array( 
          'shop' => "1",
          'artikelnummer' => "12345",
          'groesse' => "36"
     ),
     array(
          'shop' => "1",
          'artikelnummer' => "12345",
          'groesse' => "37"
          ),
     array(
          'shop' => "1",
          'artikelnummer' => "12345",
          'groesse' => "38"
          ),
     array(
          'shop' => "1",
          'artikelnummer' => "abcdef",
          'groesse' => "37"
     ),
     array(
          'shop' => "1",
          'artikelnummer' => "abcdef",
          'groesse' => "37"
     ));

$artikeliste = array();     
foreach($test as $artikel){
    $key = "{$artikel['shop']}#{$artikel['artikelnummer']}";
    if(!array_key_exists($key, $artikeliste)){
        //Entferne die groesse aus dem artikel
        array_pop($artikel);
        //Füge ihn der neuen Liste hinzu
        $artikeliste[$key] = $artikel;    
    }
}     

var_dump($artikeliste);
?>

ergibt
Code:
array(2) {
  ["1#12345"]=>
  array(2) {
    ["shop"]=>
    string(1) "1"
    ["artikelnummer"]=>
    string(5) "12345"
  }
  ["1#abcdef"]=>
  array(2) {
    ["shop"]=>
    string(1) "1"
    ["artikelnummer"]=>
    string(6) "abcdef"
  }
}
 
Zurück