Tag Bademeister,
Ein Ass. Array hat per Definition keine Positionen!
Doch.
Jein.
PHP speichert ALLE arrays in einer assoziativen Form.
Dass in PHP überhaupt so etwas wie eine Ordnung auf Arrays existiert liegt daran, dass die Arrays intern als sortierte Map abgelegt werden, sie sind also automatisch nach ihrem Schlüssel (ob numerisch oder nicht) sortiert.
»»array_push o.ä. funktioniert deswegen darauf auch nicht.
Doch.
Was daran liegt, dass in PHP alle Arrays intern assoziativ gespeichert werden, ja. Es kommt aber, wenn man sich diese besondere Eigenschaft der PHP-Arrays zu Nutze macht, in den seltensten Fällen das raus, was sich der Programmierer erwartet (Zitat aus o.g. Seite):
"[...]Attempting to append to an associative array is almost always a programmer mistake, but PHP will give the new elements numeric indexes without issuing a warning:
$person = array('name' => 'Fred');
$person[] = 'Wilma'; // $person[0] is now 'Wilma'
[...]"
Nach der PHP-internen Realisierung zwar völlig logisch so, aber im Zweifelsfall nicht das, was sich der Programmierer so vorstellt.
Ein assoziatives Array mit push, pop usw. zu behandeln mag funktionieren, weil PHP eben intern auch mit numerischen Arrays wie mit assoziativen Arrays umgeht - semantisch ist es aber Blödsinn.
Ein assoziatives Array bildet keine Liste mit "vorne" und "hinten" - die Array-SCHLÜSSEL hingegen schon.
Viele Grüße,
Jörg