Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 06-01-2005, 19:15
dioony
 Newbie
Links : Onlinestatus : dioony ist offline
Registriert seit: Oct 2004
Ort: Oldenburg
Beiträge: 49
dioony ist zur Zeit noch ein unbeschriebenes Blatt
Standard 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
Mit Zitat antworten