phpbar.de logo

Mailinglisten-Archive

[php] Problem mit asort/arsort

[php] Problem mit asort/arsort

Kristian =?iso-8859-1?Q?K=F6hntopp?= kk_(at)_netuse.de
Mon, 06 Sep 1999 11:47:25 +0200


Egon Schmid wrote:
> $a[""] ist der größte Blödsinn den "mann" sich ausdenken kann. Du kannst
> ja ein Bug Report machen. Bin schon auf der Seite und versuche die
> schnellste Zeit (1 Minute und 24 Sekunden) mit der man jemals einen Bug
> Report geschlossen hat noch zu unterbieten.

Ich habe dies (PHP unterscheidet undef, 0 und "" nicht und daher funktionieren key, current, next, prev und reset flasch) bereits vor eineinhalb Jahren als Bug gemeldet. Nachdem das Core Team überhaupt verstanden hatte, daß das ein Fehler ist (Zeev hat es wie üblich gleich kapiert, Rasmus hat es nach der dritten Mail auch begriffen), hat man sich darauf geeinigt, die Anweisungen aus Kompatibilitätsgründen drin zu lassen, aber im Handbuch eine Warnung zu platzieren ->

http://www.php.net/manual/function.prev.php3
http://www.php.net/manual/function.prev.php3
http://www.php.net/manual/function.current.php3

enthalten diese Warnung, bei 

http://www.php.net/manual/function.reset.php3
http://www.php.net/manual/function.key.php3

fehlt sie fälschlicherweise.


Wenn $a[""] der 'größte Blödsinn [ist] den "mann" sich ausdenken kann', dann ist der Fehler, daß PHP das als gültigen Arrayindex zuläßt. Korrektes Verhalten wäre in diesem Fall, bei einem Arrayassignment $a[""] einen Fehler zu melden. Ich persönlich glaube, daß $a[""] nur dann falsches PHP wäre, wenn auch $a[0] falsches PHP wäre.

Wenn $a[""] dagegen gültiges PHP ist, dann sind die prev/next/reset/current/key-Funktionen fehlerhaft, weil sie diesen Fall falsch bearbeiten (nämlich nicht von einem Arrayende unterscheiden können).


$a[""] tritt sehr leicht auf, wenn man Daten aus einer Eingabe als Key nimmt, wenn man Arrayinversionen macht (Transformiere alle Values von $x als Keys von $u, um Doubletten zu eleminieren), wenn man NULL-Werte aus Datenbanken einliest und dergleichen mehr. IMHO eine sehr sinnvolle Anwendung, $a[""] zuzulassen - $a[0] ist ja schließlich auch legal.

PHP müßte sich beklagen, wenn man $a[undef] versucht, aber undef gibt es nicht in PHP - da kommen ja genau unsere Probleme her.

Kristian

-- 
Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00
Using PHP3? See our web development library at
http://phplib.shonline.de/ (GPL)


php::bar PHP Wiki   -   Listenarchive