basi: array_unique nimmt Einträge weg ?

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);

  1. 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

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. 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

      1. 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

        --
        Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
        http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
        1. Ah, jetzt hab ichs verstanden, danke!

          Gruß, basi