array_unique - seltsamer Effekt

Ich will aus einer Tabelle mehrfache Einträge löschen und das Ganze anschließend sortieren. Das Endergebnis ist auch ok, aber ich verstehe eins nicht: wenn ich mir nach dem array_unique die Tabelle anschaue (for-Schleife), dann werden etliche Einträge einfach nicht angezeigt grade so, als ob diese Tab-Felder leer wären; bei Anzeige mit „echo imlode()“ dagegen ist alles vorhanden!
Hat da vielleicht jemand eine Erklärung dafür??? Ich meine, ich will ja so eine bereinigte Tabelle nicht immer auch noch sortieren oder den Umweg über implode -> explode gehen!

Hier der Quellcode:

$BranchenTb = array(„Autohandel“, „Bauunternehmen“, „Werbeagentur“, „Softwarehaus“, „Pannenhilfe“, „Garten- u. Landschaftsbau“, „Werbeagentur“, „Ingenieurbüro“, „Garten- u. Landschaftsbau“, „Werbeagentur“, „Softwarehaus“, „Existenzberatung“, „Montagen“, „Werbeagentur“, „Schnellimbiss“);
echo „Orginal in Tab: „.count($BranchenTb).“ Schleife:“;
for ($i = 0; $i i=".$i." ".$BranchenTb[$i];
}
$BranchenTb = array_unique($BranchenTb);
echo "

Nach unique in Tab: „.count($BranchenTb).“ Schleife 1:";
echo "
„.implode(“ - „,$BranchenTb).“
„;
for ($i = 0; $i i=“.$i." ".$BranchenTb[$i];
}
sort($BranchenTb);
echo "

Nach sort in Tab: „.count($BranchenTb).“ Schleife 2:";
for ($i = 0; $i i=".$i." ".$BranchenTb[$i];
}
?>

Und die Ergebnisse:

Nach unique Anzeige implode:

Autohandel - Bauunternehmen - Werbeagentur - Softwarehaus - Pannenhilfe - Garten- u. Landschaftsbau - Ingenieurbüro - Existenzberatung - Montagen - Schnellimbiss

Anzeige Schleife 1:

i=0 Autohandel
i=1 Bauunternehmen
i=2 Werbeagentur
i=3 Softwarehaus
i=4 Pannenhilfe
i=5 Garten- u. Landschaftsbau
i=6
i=7 Ingenieurbüro
i=8
i=9

Nach sort Anzeige Schleife 2:
i=0 Autohandel
i=1 Bauunternehmen
i=2 Existenzberatung
i=3 Garten- u. Landschaftsbau
i=4 Ingenieurbüro
i=5 Montagen
i=6 Pannenhilfe
i=7 Schnellimbiss
i=8 Softwarehaus
i=9 Werbeagentur

Hallo !

Ich will aus einer Tabelle mehrfache Einträge löschen und das
Ganze anschließend sortieren. Das Endergebnis ist auch ok,
aber ich verstehe eins nicht: wenn ich mir nach dem
array_unique die Tabelle anschaue (for-Schleife), dann werden
etliche Einträge einfach nicht angezeigt grade so, als ob
diese Tab-Felder leer wären; bei Anzeige mit „echo imlode()“
dagegen ist alles vorhanden!
Hat da vielleicht jemand eine Erklärung dafür??? Ich meine,
ich will ja so eine bereinigte Tabelle nicht immer auch noch
sortieren oder den Umweg über implode -> explode gehen!

Ja. array_unique erhält die Keys.

$BranchenTb = array(

„Autohandel“, // 0
„Bauunternehmen“,// 1
„Werbeagentur“, // 2
„Softwarehaus“, // 3
„Pannenhilfe“, // 4
„Garten- u. Landschaftsbau“, // 5
„Werbeagentur“, // 6
„Ingenieurbüro“, // 7
„Garten- u. Landschaftsbau“, // 8
„Werbeagentur“, // 9
„Softwarehaus“, // 10
„Existenzberatung“, // 11
„Montagen“, // 12
„Werbeagentur“, //13
„Schnellimbiss“); // 14

Nach dem array_unique gibt es die Keys 6,8,9,10,13 nicht mehr, daher ist die Anzeige an der Stelle „leer“. „Schnellimbiss“ z.B. behält aber Index 14.
Durchlaufe das Array mit foreach, dann hast du die Probleme nicht:
reset($BranchenTb);
foreach($BranchenTb as $key => $value) {
echo $key."=>".$value."
";
}

Den Key kann man weglassen, wenn man Ihn nicht braucht, also
foreach($BranchenTb as $value) geht auch.
Wenn du die Indexe 0-basiert brauchst, kannst du auch array_values(array_unique(…)) verwenden.

Alexander