8791 sujets

Développement web côté serveur, CMS

Pourquoi ceci :

for($s = 'A'; $s < 'Z'; $s++) echo '<a href="#" onclick="window.open();">'.$s.'</a>'.str_repeat('&nbsp;', 3);


ne donne pas la même chose que ça :

for($s = 'A'; $s <= 'Z'; $s++) echo '<a href="#" onclick="window.open();">'.$s.'</a>'.str_repeat('&nbsp;', 3);



j'ai donc pour solution que cela :

for($s = 'A', $i=0; $s <='Z'; $s++, $i++):

    if($i <= 25)    echo '<a href="#" onclick="window.open();">'.$s.'</a>'.str_repeat('&nbsp;', 3);

endfor;
Parce que la première va aller de A jusqu'à Z et que la seconde va aller de A jusqu'à Y ?

Au même titre que

for($s=1;$s<3;$s++){echo $s;}

affichera 12

et que
for($s=1;$s<=3;$s++){echo $s;}

affichera
123


Je vois pas où est le problème en fait, c'est même franchement le comportement qu'on demande à for()... Smiley confuse
Modifié par Lothindil (21 Aug 2012 - 20:50)
Parsque la condition est différente peut-être Smiley biggol .

Faudrai être un peu plus clair dans t'es explications mais visiblement $s <= 'Z' s'arrête à "YZ"
Étrange comportement de php (bug ?) car pas de problème avec d'autre lettre.
Sinon tu peux toujours faire $s !== 'AA', passé par un do while, utilisé old() ou juste faire la condition sur $i.
Oui je m'attends bien sûr à ce qu'il y ait une différence mais pas "MAJEURE" c'est pour ça que j'ai employé ce terme, excusez moi d'avoir été ambigü.

voilà exactement ce que m'affiche la boucle dans le cas où l'opérateur est " <= "

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BZ CA CB CC CD CE CF CG CH CI CJ CK CL CM CN CO CP CQ CR CS CT CU CV CW CX CY CZ DA DB DC DD DE DF DG DH DI DJ DK DL DM DN DO DP DQ DR DS DT DU DV DW DX DY DZ EA EB EC ED EE EF EG EH EI EJ EK EL EM EN EO EP EQ ER ES ET EU EV EW EX EY EZ FA FB FC FD FE FF FG FH FI FJ FK FL FM FN FO FP FQ FR FS FT FU FV FW FX FY FZ GA GB GC GD GE GF GG GH GI GJ GK GL GM GN GO GP GQ GR GS GT GU GV GW GX GY GZ HA HB HC HD HE HF HG HH HI HJ HK HL HM HN HO HP HQ HR HS HT HU HV HW HX HY HZ IA IB IC ID IE IF IG IH II IJ IK IL IM IN IO IP IQ IR IS IT IU IV IW IX IY IZ JA JB JC JD JE JF JG JH JI JJ JK JL JM JN JO JP JQ JR JS JT JU JV JW JX JY JZ KA KB KC KD KE KF KG KH KI KJ KK KL KM KN KO KP KQ KR KS KT KU KV KW KX KY KZ LA LB LC LD LE LF LG LH LI LJ LK LL LM LN LO LP LQ LR LS LT LU LV LW LX LY LZ MA MB MC MD ME MF MG MH MI MJ MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NB NC ND NE NF NG NH NI NJ NK NL NM NN NO NP NQ NR NS NT NU NV NW NX NY NZ OA OB OC OD OE OF OG OH OI OJ OK OL OM ON OO OP OQ OR OS OT OU OV OW OX OY OZ PA PB PC PD PE PF PG PH PI PJ PK PL PM PN PO PP PQ PR PS PT PU PV PW PX PY PZ QA QB QC QD QE QF QG QH QI QJ QK QL QM QN QO QP QQ QR QS QT QU QV QW QX QY QZ RA RB RC RD RE RF RG RH RI RJ RK RL RM RN RO RP RQ RR RS RT RU RV RW RX RY RZ SA SB SC SD SE SF SG SH SI SJ SK SL SM SN SO SP SQ SR SS ST SU SV SW SX SY SZ TA TB TC TD TE TF TG TH TI TJ TK TL TM TN TO TP TQ TR TS TT TU TV TW TX TY TZ UA UB UC UD UE UF UG UH UI UJ UK UL UM UN UO UP UQ UR US UT UU UV UW UX UY UZ VA VB VC VD VE VF VG VH VI VJ VK VL VM VN VO VP VQ VR VS VT VU VV VW VX VY VZ WA WB WC WD WE WF WG WH WI WJ WK WL WM WN WO WP WQ WR WS WT WU WV WW WX WY WZ XA XB XC XD XE XF XG XH XI XJ XK XL XM XN XO XP XQ XR XS XT XU XV XW XX XY XZ YA YB YC YD YE YF YG YH YI YJ YK YL YM YN YO YP YQ YR YS YT YU YV YW YX YY YZ



Pouvez vous me confirmer que c'est moi qui ai peut etre merdé dans le code ou alors que c'est une petite faille du moteur du langage?
Possible, je me rends compte que je n'ai jamais bouclé directement sur la lettre (j'ai dû lire à l'époque quelque chose qui m'a découragé d'essayer) et j'utilise ceci comme code :

$i = 'A';
  for($n=0; $n<26; $n++) 
  {
    echo "<b><a class='menu' href='pre.bestiaire.php?lettre=".$i."'>".$i."</a></b> -";
    $i++;
  }


et j'ai trouvé quelques autres méthodes :

<?php
for ($i=65; $i<=90; $i++) {
    echo chr($i);
}
?>



<?php
foreach(range('A','Z') as $i) {
    echo $i;
}
?>&#65279;


<?php
for ($i=ord("A");$i<=ord("Z");$i++)
   {
      echo(chr($i)."<br>")
   }
?>


Dans la dernière, ils utilisent la fonction (qui retourne le code ascii, c'est peut-être ta solution ^^ )
Modifié par Lothindil (22 Aug 2012 - 08:53)
Comme toujours en informatique il y a plein de manières pour résoudre un seul problème et je crois qu'il y a assez eu de solutions pour clore le sujet.

Merci à vous.