Mailinglisten-Archive |
* Ryssel, Maik wrote: > gibt es eine Möglichkeit bei der switch Anweisung auf eine Regexe zu > matchen?? Zunächst würde man vermuten, dass es nicht geht, zumindest nicht mit switch ($zu_ueberpruefende_variable): | The case expression may be any expression that evaluates to a simple type, | that is, integer or floating-point numbers and strings. Arrays or objects | cannot be used here unless they are dereferenced to a simple type. (http://www.php.net/manual/en/control-structures.switch.php) In den annotated notes findet sich aber folgender Hinweis: | just a further example of the above note, you can do the following type of | searching: | | switch (true){ | case ( ereg ("stats",$userfile_name) ): | echo "processing stats"; | process_stats(); | break; | case ( ereg("prices",$userfile_name) ): | echo "processing prices"; | process_prices(); | break; | default: | echo = "File not recognized!!."; | } | | this script could be used to determine data formats for uploaded files | based on a nameing convention. just one example. Das genannte Beispiel finde ich aber recht dreckig, und IMHO ist es wesentlich besser und eleganter, einfach ein if (ereg("stats", $userfile_name)) { } elseif ( ... ) { } zu schreiben anstatt das switch/case Konstrukt so zu mißbrauchen. Das switch (true) ergibt sich aus der Art, wie PHP überprüft, es wandelt praktisch das entsprechende case in eine Abfrage der Art: if (true == ereg("stats",$userfile_name)) um. -- Verbindliche PHP-Unterstützung gewünscht? Lassen Sie sich von unserem PHP-Support überzeugen. Infos anfordern: team_(at)_thinkphp.de
php::bar PHP Wiki - Listenarchive