PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   mehrdimensionales array aussortieren (https://www.php-resource.de/forum/php-developer-forum/48954-mehrdimensionales-array-aussortieren.html)

dioony 06-01-2005 19:15

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

firstlord18 06-01-2005 20:02

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 !!!


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:52 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG