Andreas Korthaus: array_splice($arr,0,0) in PHP 4.3.1 ist Schrott - oder?

Beitrag lesen

Hi!

bin gerade dabei, unsere ganzen Scripte umzustellen auf die PHP 4.3.1^und muss feststellen, dass nix mehr funktioniert.

Liegt voer allem an ein paar veränderten Grundeinstellung in der php.ini, Sachen wie register-globals, error-reporting, und auch das nur <?php akzeptiert wird...

erster gemeiner Fehler: man darf die Gültigkeit (Existenz und !false) einer Variablen nicht mehr in einem Schritt abfragen, sondern muss je nach Typ einen Riesen-Umsateiger nehmen.

Wieso? Was machst Du und was passiert? Wie fragst Du die Gültigkeit ab? if(isset($var) && $var!=false) sowas? sollte aber gehen!

zweiter Fehler: Die Funktion $neuarray=array_splice($altarr,0,0) löscht leider das gesamte Array.

Klar:

array array_splice ( array input, int offset [, int length [, array replacement]])

Als lenght gibst Du 0 an, also wird nach Manual der gesamte Array gegen Replacement ersetzt(da length nicht positiv oder negativ), was Du nicht angegeben hast, also ist der Array leer. IMHO ist array_splice die falsche Funktion für das was Du erreichen willst!

Früher (PHP 4.0.4) konnte man damit bestens ein Reindex des Arrays durchführen, so wie auch im Handbuch beschrieben.

4.0.4 ist alt, sehr alt ;-)
Meinst Du mit reindex einfach die Werte des Arrays in einen neuen Array schreiben mit neuen indices? Dann guck Dir mal: http://php.net/array-values an.

Wer kann  mir helfen ujd ggf. auch noch weitere bekannte Fehler beisteuern. Dann könnte ich noch heute in Verzweiflung geraten, sonst erst frühestens morgen.

It's not a bug, it's a feature ;-)

Grüße
Andreas