Mailinglisten-Archive |
Hallo, On Thu, Mar 09, 2000 at 09:47:47PM +0100, Markus Dobel wrote: > > > genau wie solch haessliche sachen wie $a = (bedingung?blubb:suelz); > mag sein, dass es kurz ist und vielleicht sogar schneller ablaeuft als > folgender konstrukt: > > if (bedingung) { > $a = blubb; > } > else { > $a = suelz; > } > dennoch find ich das lesbarer und logischer. aber das mag > geschmackssache sein und haengt mit sicherheit auch von der komplexitaet > des if-konstrukts ab. eben. Der Fragezeichen-Operator ist nicht einfach ein 'kryptischer' Ersatz fuer einen if-then-else-Block, sondern hat den unbestreitbaren Vorteil, dass er eine 'Expression' ist, einen Wert als Ergebnis liefert und daher als Sub-Expression eines groesseren Ausdrucks verwendet werden kann. Das kann in vielen Faellen zu kompakterem, uebersichtlicherem Code fuehren; .. und zwar insbesondere in solch trivialen Faellen, die Du oben als Beispiel angefuehrt hast. Ein typischer Anwendungsfall fuer ( cond ) ? exp1 : exp2 ; sind Dinge dieser Art: $form->add_element( array( "name" => "beispiel", "type" => "input", "size" => "10", "value" => ( isset( $varxy ) ? ( $varxy ) : ( "default" ) ) ) ); Die Alternative mittels 'if' saehe dann so aus: if ( isset( $varxy ) ){ $tmp = $varxy; } else { $tmp = "default"; } $form->add_element( array( "name" => "beispiel", "type" => "input", "size" => "10", "value" => $tmp ) ); Das ganze jetzt 'mal 10 oder 15 Formular-Elemeneten' ... welche Loesung bleibt uebersichtlicher? Der '?'-Operator ist natuerlich nicht dazu da, um nach belieben missbraucht zu werden. > is auch nich so wichtig, eigentlich gings ja darum, wieso der string ein > array ist. ... in 'fast' allen Programmiersprachen (die mir bisher untergekommen sind) sind die einzelnen Zeichen einer Zeichenkette (auf die eine oder andere Weise) adressierbar. PHP folgt hier einer langen Tradition vieler Sprachen und bildet Zeichenketten auch als 'Arrays of character' ab (wie auch Pascal, Modula-2 und -3, C, C++, etc. etc.). Das ist jawohl sinnvoll und nuetzlich und hat mit 'dirty, rotten C-trick' nix zu tun. (Wenn das in Deinen Augen schon 'dirty' ist, ... was sagst Du erstmal zur Pointer-Arithmetik ... ;) ) -andreas -- : Anti-Spam Petition: http://www.politik-digital.de/spam/ : : PGP-Key: http://www.tse-online.de/~ab/public-key : : Key fingerprint: 12 13 EF BC 22 DD F4 B6 3C 25 C9 06 DC D3 45 9B :
php::bar PHP Wiki - Listenarchive