Array_unique funktioniert nicht
boubou
- php
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?
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
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
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
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
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