Added: phpdoc/ca/trunk/language/control-structures/switch.xml =================================================================== --- phpdoc/ca/trunk/language/control-structures/switch.xml (rev 0) +++ phpdoc/ca/trunk/language/control-structures/switch.xml 2011-09-18 08:46:41 UTC (rev 316919) @@ -0,0 +1,254 @@ + + + + + + <literal>switch</literal> + + + La sentencia switch és similar a una successió de + sentencies IF de la mateixa expressió. En forces ocasions, es possible que + es vulgui comparar la mateixa variable (o expressió) amb distints valors, + i executar un fragment de codi distint en relació al valor que aquella prengui. + Aquesta és exactament la funció de switch. + + + + Cal anotar que, a diferencia de altres llenguatges, la sentencia + continue + aplicada al switch respon de forma similar a un break. De tal manera que si es + té un switch dins un loop i es vol que aquell continuï fins la següent iteració del + loop que el conté, caldrà utilitzar un continue 2. + + + + + Tingues en compte que el switch/case realitza + comparacions flexibles. + + + + Els següents dos exemples mostren dos camins diferents alhora d'escriure la + mateixa cosa, la primera utilitzant un seguit d'expressions if + i elseif, l'altre utilitzant l'expressió + switch: + + Estructura d'un <literal>switch</literal> + + +]]> + + + + L'estructura d'un <literal>switch</literal> permet l'ús de cadenes (strings) + + +]]> + + + + + És important entendre com la sentencia switch + es executada per evitar errors. La sentencia + switch executa línia per línia + (en realitat, sentencia per sentencia). A l'inici, cap codi és + executat. Només quan una sentencia case es correspon + amb el valor busca't per switch, PHP començarà a executar + les sentencies. Continuant executant-les totes fins al final del bloc + switch, o fins a trobar una sentencia + break de trencament. Així doncs, si no s'escriu cap + sentencia break com a darrera sentencia d'un case, + PHP continuarà executant aquelles sentencies pròpies de tots els casos que + precedeixin el cas on s'hagi donat la coincidència. Per exemple: + + + +]]> + + + + + Aquí, si $i és igual a 0, PHP executarà tots les sentencies + echo presents. Si $i és igual a 1, PHP executarà les dues + darreres. Només s'obtindria el resultat esperat ('i és igual a 2') + en el cas que $i fos igual a 2. Per tant, + és important no obviar les sentencies break + (a menys és clar, que es desitgi evitar-ne l'ús en atenció a determinats + comportaments circumstancials). + + + En la sentencia switch, la condició es avaluada només el + primer cop i el resultat de tal avaluació serà contrastat amb cadascun dels casos + case presents. Recordem aquí que en una sentencia elseif + la condició es avaluada cada cop. Així, si la condició és més complexa que + una simple comparació del tipus i/o (and/or) dins dels bucles interns, la utilització d'un + switch pot resoldre's amb major rapidesa. + + + La llista de sentencies d'un cas (case) pot estar buida, la qual cosa simplement + passarà el control a la llista següent de sentencies del següent cas. + + + +]]> + + + + + Un cas especial és l'ús del case default. El qual qual + s'executarà sempre que no s'hagi trobat coincidència en cap dels casos previstos. + Per exemple: + + + +]]> + + + + + L'expressió avaluada en el case pot ser de tipus simple + (simple type), això és, un enter (integer), un nombre amb coma flotant (floating-point + numbers) o una cadena (strings). Matrius (arrays) o objectes (POO) no poden ser + utilitzats aquí a menys que aquells es descomponguin en un tipus simple. + + + La sintaxis alternativa per a les estructures de control es compatible amb + els switches. Per a més informació, vegi's Sintaxis alternativa + per a les estructures de control. + + + +]]> + + + + + També és possible utilitzar el punt i coma enlloc dels dos punts després del cas així: + + + +]]> + + + + + + Property changes on: phpdoc/ca/trunk/language/control-structures/switch.xml ___________________________________________________________________ Added: svn:keywords + Id Rev Revision Date LastChangedDate LastChangedRevision Author LastChangedBy HeadURL URL Added: svn:eol-style + native