array_unique nimmt Einträge weg ?
basi
- php
Hi,
ich füge mit array_merge() vier array zusammen, das daraus entstandene hat folgende Inhalte:
(links der index, die beiden pipelines sind nur an die Ausgabe angehängt, stehen also nicht im arrayFeld)
0 |188|
1 |321|
2 |367|
3 |321|
4 |337|
5 |349|
6 |367|
Dann will ich die mehrfachen raushaben, benutze array_unique(). Danach sieht das array so aus:
0 |188|
1 |321|
2 |367|
3 ||
4 |337|
Warum klaut die Funtktion mir den Eintrag mit dem Inhalt 349?
Stimmt da was mit der Funktion nicht oder wende ich sie falsch an?
Code:
$allArr = array_merge($nameArr, $zuordnungsArr, $keywordArr, $genreArr);
$linkArr = array_unique($allArr);
Hi,
Warum klaut die Funtktion mir den Eintrag mit dem Inhalt 349?
Stimmt da was mit der Funktion nicht oder wende ich sie falsch an?
Es könnte auch sein, daß der Code, mit dem Du das Array vorher und/oder nachher anzeigst, falsch ist...
Sieht irgendwie so aus, als ob Du die ersten array-length Indizes anzeigen läßt.
Was passiert bei Anzeige über
foreach ($linkArr as $key => $value)
{
echo "$key |$value|";
}
Aus der PHP-Doku zu array_unique: Note that keys are preserved.
cu,
Andreas
Hi, erst einmal danke, das Array ist doch richtig gefüllt!
Es könnte auch sein, daß der Code, mit dem Du das Array vorher und/oder nachher anzeigst, falsch ist...
Ich habs so angezeigt:
for($i=0;$i<count($linkArr);$i++)
print "<br>$i |" . $linkArr[$i] . "|";
Sieht irgendwie so aus, als ob Du die ersten array-length Indizes anzeigen läßt.
Was passiert bei Anzeige über
foreach ($linkArr as $key => $value)
{
echo "$key |$value|";
}Aus der PHP-Doku zu array_unique: Note that keys are preserved.
Damit gehts richtig. Aber ich verstehe nicht so ganz, warum. $linkArr[$i] ist doch immer der Wert, wenn das Array eindimensional ist. Und die anderen Werte zeigt er ja auch richtig an. Was verstehe ich falsch?
Gruß, basi
Hi,
Aus der PHP-Doku zu array_unique: Note that keys are preserved.
Damit gehts richtig. Aber ich verstehe nicht so ganz, warum. $linkArr[$i] ist doch immer der Wert, wenn das Array eindimensional ist. Und die anderen Werte zeigt er ja auch richtig an. Was verstehe ich falsch?
Das Array vorher:
key : value
0 : 188
1 : 321
2 : 367
3 : 321
4 : 337
5 : 349
6 : 367
Das Array nachher (Duplikate wurden gelöscht, aber die Keys wurden nicht verändert):
key : value
0 : 188
1 : 321
2 : 367
4 : 337
5 : 349
Beachte die ERSTE Spalte.
array_unique ändert die keys nicht (so wie es in der Doku steht).
Der Wert 349 steht also nach wie vor bei key 5.
Du hast aber die Werte zu den Keys 0, 1, 2, 3, 4 ausgegeben mit Deiner Schleife...
cu,
Andreas
Ah, jetzt hab ichs verstanden, danke!
Gruß, basi