doppelte werte aus multidimensionalem array entfernen

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

  • doppelte werte aus multidimensionalem array entfernen

    hallo leute,

    ich habe folgendes Problem.

    Ich habe ein array mit werten. in diesem array gibt es doppelte items, hier ID.
    Wie bekomme ich die doppelten datensätze entfernt?
    Sprich wenn die caseID doppelt ist, dann schmess das komplette ding raus.

    PHP-Code:
    [5] => Array
                    (
                        [
    inbox] => FO Aktivierung
                        
    [ID] => 1000000000002446222
                        
    [source_ticket_id] => 694567054
                        
    [receive_date] => 2013-06-10 08:00:00
                        
    [datum_statuschange] => 2013-06-10 08:01:00
                        
    [statuschange_timespan] => 19322
                    
    )

                [
    6] => Array
                    (
                        [
    inbox] => FO Aktivierung
                        
    [ID] => 1000000000002446222
                        
    [source_ticket_id] => 694567054
                        
    [receive_date] => 2013-06-10 08:00:00
                        
    [datum_statuschange] => 2013-06-10 08:01:00
                        
    [statuschange_timespan] => 60
                    
    )

                [
    7] => Array
                    (
                        [
    inbox] => FO Aktivierung
                        
    [ID] => 1000000000002446264
                        
    [source_ticket_id] => 694731355
                        
    [receive_date] => 2013-06-10 08:00:00
                        
    [datum_statuschange] => 2013-06-10 08:01:00
                        
    [statuschange_timespan] => 60
                    

    hab schon array_unique funktionen auf php.net getestet, aber diese methoden gehen immer davon aus, dass das array genau gleiche werte hat. also kann ich auch keinen md5 hash vergleichen oder ähnliches.

    danke.

  • #2
    Als Erstes solltest du dir die Frage stellen, WARUM es doppelte IDs gibt. So was sollte von Hause aus immer eindeutig(!) sein.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Hallo,

      das hat schon seine richtigkeit. hierbei gehts um statuswechsel dieser id. diese passieren häufiger.

      also sprich, der status wechselt zu verschiedenen zeiten. ich brauche aber nur den ersten statuswechsel. deswegen gibts diese id doppelt. es handelt sich auch mehr um einen datensatz, der eine eindeutig id hat.

      Kommentar


      • #4
        Array einmal komplett durchlaufen, Werte in ein neues Array schreiben und für den Index die ID nehmen. Dabei immer mit arrays_key_exists prüfen. Vom Prinzip her so:
        PHP-Code:
        $tmpArray =  array();
        foreach (
        $array as $value) {
          if (!
        array_key_exists($value['ID'], $tmpArray)) {
            
        $tmpArray[$value['ID']] = $value;
          }  

        Peter

        PS: blind gehackt und ungetestet. Außerdem kann man das auch sicher über SQL lösen.
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          ok, na dann...danke erstmal..
          ich werds testen und den erfolgt oder auch nicht...rückmelden

          Kommentar


          • #6
            habe die function etwas für meine zwecke angepasst.

            Das wars. dadurch, dass jetzt die ID eindeutig im Index steht, hab ich natürlich keine doppelten einträge mehr. ich ....
            um die daten jedoch nachher weiter für meine zwecke verarbeiten zu können, musste ich die ID in der zweiten foreach wieder entfernen. besseres ist mir nicht eingefallen. hehe

            PHP-Code:
            public static function array_unique_multidimensional($array) {
                    
            $tmpArray =  array(); 
                    foreach(
            $array as $index => $value) { 
                        if(!
            array_key_exists($value['ID'], $tmpArray)) { 
                            
            $tmpArray[$value['ID']] = $value
                        }
                    }
                    
            //jetzt muss die ID wieder raus.
                    //sonst klappt die weitere Verarb. nicht mehr.
                    
            foreach($tmpArray as $case_data) {
                        
            $data[] = $case_data;
                    }
                    return 
            $data;
                } 

            Kommentar

            Lädt...
            X