Tach auch.
Das ist bekannt, und meiner Ansicht nach auch logisch.
Sehe ich nicht so.
Ein array_slice für ein Element kann bei einer doppelt verketteten Liste durchaus in O(1) implementiert werden (es müssen ja nur die Zeiger beim Vorgänger- und Nachfolge-Element umgebogen werden, das Suchen des richtigen Elements meinetwegen noch in O(n) dazurechnen, wenn man keine Iteratoren nutzt).
Siehe z.B. C++ STL:
"Fill insert, range insert, and range erase are linear.
The complexities of single-element insert and erase are sequence dependent. "
gültig etwa für einen std::vector, was ja mit einem PHP-Array mit Zahlen als Indizes vergleichbar ist.
Wenn du aus einem Array 1..1000 das 1. Element mit slice rausschneidest, müssen alle nachfolgenden Indices umgeschrieben werden.
Wenn man die Verknüpfung Array-Index => Element fest speichert, ist das korrekt.
Dies ist etwa der Fall für einen assoziativen Array (in perl wäre es der Hash).
Nur: wenn man nicht vorhat, nicht-zahlenbasierte Array-Indizes zu verwenden, ist eine feste Speicherung gar nicht notwendig. Den []-operator kann man auch ohne feste Verknüpfung implementierbar.
Bis die Tage,
Matti