mehrdimensionales array aussortieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mehrdimensionales array aussortieren

    Mittag!


    Ich hab mich schon totgesucht und auch schon einige dutzende versionen probiert, aber es klappt nie so, wie ich will

    Habe folgendes problem:

    Ich habe ein mehrdimensionales array in folgender form:

    PHP-Code:

    $daten
    [0]["id"]=1;
    $daten[0]["name"]="muster";
    $daten[0]["vorname"]="peter";
    $daten[0]["ort"]="berlin";

    $daten[1]["id"]=2;
    $daten[1]["name"]="mann";
    $daten[1]["vorname"]="klaus";
    $daten[1]["ort"]="hamburg";
    ... 


    dass array wird aus 3 arrays mit array_merge zusammengesetzt.
    die 3 ursprungsarrays haben den selben aufbau, wie das array $daten oben.
    Die 3 arrays heißen zum beispiel $source1, $source2 und $source3

    jetzt kann es vorkommen, dass z.b. in $source1 und $source3 die selben Einträge vorkommen. wenn er nun diese mit array_merge zu $daten zusammenfügt, ist ja der eintrag doppelt oder gar dreifach da. er soll aber nur einmal vorkommen. deshalb muss er ja irgendwie das array aussortieren.

    ich habs schon mit array_unique probiert, aber da löscht er mehrere, weil array_unique wohl nicht mit dem mehrdimensionalem klar kommt.

    dann hab ich versucht, das array mit 2 verschachtelten for - schleifen zu vergleichen und bei doppelten einträgen nur ein eintrag in ein array schreiben
    das ganze sieht dann so aus:
    PHP-Code:

            $daten
    =array_merge($source1,$source2);
                                    
    $dummy=array();
            for(
    $i=0;$i<count($daten);$i++)
            {
                  
    $found=false;
                  for(
    $j=0;$j<count($daten);$j++)
                 {
                   if(
    $daten[$i]["id"]==$daten[$j]["id"] && $i!=$j)
                          
    //$i!=$j steht, damit er den vergleich von sich selbst ignoriert
                       
    {
                         
    $found=true;

                        };
                 };
                 if(!
    $found)
                  {
                     
    array_push($dummy,$daten[$i]);
                  };
            };
            
    $daten=$dummy
    Er löscht bei dieser version zwar doppelte einträge, aber alle doppelten.
    es soll ja aber einer stehen bleiben!

    ich hoffe, dass ihr mein problem versteht und ob mir da jemand weiterhelfen kann?!

    danke im voraus!

    dioony
    Das Problem zu erkennen ist wichtiger, als die Lösung zu erkennen, denn die genaue Darstellung des Problems führt zur Lösung.
    [Albert Einstein

  • #2
    ja also du setzt $found auf true, wenn er einen doppelten findet. und nur wenn $found false ist, schreibt er den eintrag in das neue Array !! du müsstes das irgendwie anders machen, ich weiß im moment aber nicht genau wie !!!

    Kommentar

    Lädt...
    X