boubou: Array_unique funktioniert nicht

Hallo zusammen ich hab ein Array welches so aussieht:
Array
(
    [ordner_id] => 85
)

Array
(
    [ordner_id] => 86
)

Array
(
    [ordner_id] => 87
)

Array
(
    [ordner_id] => 85
)

Array
(
    [ordner_id] => 86
)

so und da sieht man schon doppelte Values. Die wollte ich mit array_unique löschen.
Das sieht so aus:
$array = array_unique($assoc);
print_r($array);

Aber in meinem neuen Array $array ist immernoch der selbe Inhalt woran liegt das?

  1. Hi boubou!

    Hallo zusammen ich hab ein Array welches so aussieht:

    Ich sehe da mehrere Arrays mit jeweils einem Eintrag.

    Aber in meinem neuen Array $array ist immernoch der selbe Inhalt woran liegt das?

    Wie ist $array aufgebaut?

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Also mach ich mal von anfang an.

      Ich hole die Daten so rein:
      $select = SELECT ordner_id FROM ordner_register WHERE register_id = '$registerid' UNION SELECT ordner_id FROM ordner WHERE (ordner_inhalt LIKE '%$name%' OR ordner_name LIKE '%$name%') AND Deleted='0'

      Dann mach ich darauf einen query und prüfe ob ergebnisse vorhanden

      $query = mysql_query($select);
      if (mysql_num_rows($query) > 0) { // wenn vorhanden lese ich sie aus
         while ($assoc = mysql_fetch_assoc($query)) {
             $array = array_unique($assoc);
             print_r($array);
         }
      }

      So im $assoc sind die ids gespeichert 85,86,85,86,87
      in $array müsste jetzt theoretisch stehen 85,86,87
      aber genau das passiert nicht ich kriege haargenau das gleiche array wie in $assoc mit den doppelten einträgen

      1. Hi Boubou!

        $array = array();  
        $query = mysql_query($select);  
        if (mysql_num_rows($query) > 0) { // wenn vorhanden lese ich sie aus  
          while ($assoc = mysql_fetch_assoc($query)) {  
            $array[] = $assoc['ordner_id'];  
          }  
          $array = array_unique($array);  
          print_r($array);  
        }
        

        MfG H☼psel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
      2. Hi,

        Also mach ich mal von anfang an.

        Das waere nicht noetig, wenn du die Hinweise, die du bekommen hast, beachten wuerdest ...

        while ($assoc = mysql_fetch_assoc($query)) {
               $array = array_unique($assoc);

        Was soll denn der Unfug?
        Du holtst dir hier einen Datensatz-Inhalt, der nur aus einer Spalte besteht, als Array.
        Und auf dieses eine Array mit diesem einen Wert wendest du dann array_unique an - nicht besonders sinnvoll, hm?

        So im $assoc sind die ids gespeichert 85,86,85,86,87

        Nein, sind sie nicht. Zumindest nicht bei dem Code, den du gezeigt hast.

        in $array müsste jetzt theoretisch stehen 85,86,87

        Nein, wie denn auch.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
  2. Hi,

    Hallo zusammen ich hab ein Array welches so aussieht:
    Array
    (
        [ordner_id] => 85
    )

    Array
    (
        [ordner_id] => 86
    )

    ...

    Also hast du ein Array, welches als Elemente wiederum Arrays enthaelt.

    $array = array_unique($assoc);
    print_r($array);

    Aber in meinem neuen Array $array ist immernoch der selbe Inhalt woran liegt das?

    Daran, dass die Elemente deines Arrays absolut *ungleich* sind.

    array_unique: "Two elements are considered equal if and only if (string) $elem1 === (string) $elem2. In words: when the string representation is the same."

    Die String-Represaentation deines ersten Elements ist

    Array
    (
        [ordner_id] => 85
    )

    die deines zweiten

    Array
    (
        [ordner_id] => 86
    )

    Die sind nicht gleich; also hat array_unique wie gewuenscht funktioniert - es hat alle ungleichen Werte uebrig gelassen.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“