Ankündigung

Einklappen
Keine Ankündigung bisher.

problemem mit array_unique()

Einklappen

Neue Werbung 2019

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

  • problemem mit array_unique()

    ich hab ein array, in dem einträge zum Teil doppelt vorkommen. nun will ich gerne die doppelten einträge entfernen. irgendwie funktioniert es nicht.
    Code:
    <?php
    $a[] = 1;
    $a[] = 2;
    $a[] = 3;
    $a[] = 1;
    $a[] = 3;
    $a[] = 4;
    $a[] = 5;
    
    $a = array_unique($a);
    
    $anz = count($a);
    echo "Anzahl = ".$anz."
    ";
    for ($i = 0; $i < $anz; $i++) {
    	echo $i."=".$a[$i]."
    ";
    }
    ?>
    Als ergebnis wird das hier ausgegeben.
    Anzahl = 5
    0=1
    1=2
    2=3
    3=
    4=
    normalerweise sollte doch aber eigentlich das da stehen:
    0=1
    1=2
    2=3
    3=4
    4=5

    vielen dank schon mal für die hilfe

  • #2
    Das ist schon ok so.
    Wie in der Doku steht, werden die Schlüssel beibehalten.
    Wenn du bei erstellen des Arrays keine Schlüssel angibst, so fängt php bei 0 an zu zählen.
    Am besten du machst mal ein var_dump() auf das array vor und nach dem array_unique und duu wirst sehen was ich meine.

    Wie gesagt, so steht es auch in der Doku von php.
    --
    kostenlose geschenklisten unter www.wunli.de

    Kommentar


    • #3
      ah danke für die antwort. hatte die doku davor auch gelesen, aber leider nicht ganz verstanden aber wer suchet der findet. so funktionierts jetzt, obwohl ich es nicht ganz nachvollziehen kann.
      PHP-Code:
      <?php

      function DoppelteWerteEntfernen($AlterArray) {
              
      $AlterArray array_unique($AlterArray);
              
      $i=0;
              foreach(
      $AlterArray as $Wert)
              {
                 
      $NeuerArray[$i] = $Wert;
                 
      $i++;
              }
              return 
      $NeuerArray;
      }

      $a[] = 1;
      $a[] = 2;
      $a[] = 3;
      $a[] = 1;
      $a[] = 3;
      $a[] = 4;
      $a[] = 5;


      $a DoppelteWerteEntfernen($a);

      $anz count($a);
      echo 
      "Anzahl = ".$anz."
      "
      ;
      for (
      $i 0$i $anz$i++) {
          echo 
      $i."=".$a[$i]."
      "
      ;
      }

      ?>

      Kommentar


      • #4
        Vorschlag für die Funktion:

        PHP-Code:
        <?php
        function DoppelteWerteEntfernen($AlterArray) {
            
        $b = array();
            foreach(
        $AlterArray as $value) {
                if ( 
        false == in_array($value$b)) {
                    
        $b[] = $value;
                }
            }
            
            return 
        $b;
        }
        ?>
        --
        kostenlose geschenklisten unter www.wunli.de

        Kommentar

        Lädt...
        X