phpbar.de logo

Mailinglisten-Archive

[php] Hilfe: Mein SWITCH (TRUE) funktioniert nicht

[php] Hilfe: Mein SWITCH (TRUE) funktioniert nicht

Jörg Krause php_(at)_phpcenter.de
Sun, 29 Jul 2001 13:11:31 +0200


Hi,

> Patrick Mueller wrote on Sunday, July 29, 2001 11:15 AM
> To: php_(at)_phpcenter.de
> Subject: Re: [php] Hilfe: Mein SWITCH (TRUE) funktioniert nicht
>
>
> Hi !
>
> Du hast am Sun, 29 Jul 2001 10:25:52 +0200 folgendes getippert:
>
> > Das funktioniert nicht:
> > switch (true) {
> > case ( stristr($f1_url,"download") ):
> > echo "teffer
> > **************************************************************<br>";
> >     break;
> >   default:
> >       $back  = "unbekannter Fall: ".$f1_url;
> >   }
>
> Du hast die Benutzung von Switch noch nicht ganz verstanden,
> deshalb: http://www.php.net/manual/de/control-structures.switch.php
>
> "...
>  Der case-Ausdruck kann eine Prüfung einfacher Typen sein, also von
>  Integer- oder Fließkomma-Zahlen oder von Strings / Zeichenketten.
>  Arrays oder Objekte können nicht benutzt werden, es sei denn, sie
>  werden auf einfache Typen herunter gebrochen..."
>
[...]
Das Skript funktioniert. Der Fehler liegt nicht hier.
Die Schreibweise

switch (TRUE){
 case (komplexer Ausdruck):
...
}

ist zulässig, weil zwischen den Resultaten ein einfacher Vergleich
stattfindet, so wie es die Syntax erwartet. Die Beschreibung sagt auch
nichts anderes. Denn der Ausdruck stristr($f1_url,"download") wird
entweder FALSE oder die Fundstelle zurückgeben, was PHP in diesem Fall
als TRUE interpretiert. Damit funktioniert switch in jedem Fall.
Besser ist, die Umwandlung nicht PHP zu überlassen:

case ((boolean) stristr($f1_url,"download") ):

Ansonsten ist das aber unkritisch.

Jörg

--
E-Mail:  joerg_(at)_krause.net Info: www.joerg.krause.net
Hier gibt es die Infos: http://www.php.comzept.de
NEU: Die Referenz PHP 4! http://www.php.comzept.de/referenz
----------------------------------------------------



php::bar PHP Wiki   -   Listenarchive