PHP WTF #6

Heute inkrementieren wir mal Strings.

$string = 'Iteration number 0';

$i = 10;

while ($i--)
	echo $string++ . "<br />";

Output:

Iteration number 0
Iteration number 1
Iteration number 2
Iteration number 3
Iteration number 4
Iteration number 5
Iteration number 6
Iteration number 7
Iteration number 8
Iteration number 9

Das war ja schonmal ganz nett zum warmwerden. Aber jetzt: fasten your seatbelts.

for ($i = 'a'; $i <= 'z'; $i++) 
{
	echo $i . " ";
}

Output:

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

Wow! Und allemal cooler als der hier:

for ($i = ord('a'); $i <= ord('z'); $i++) 
{
	echo chr($i) . " ";
}

Output:

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

Wem langweilig ist, kann damit gern ein bisschen rumspielen (ASCII-Tabelle gefällig?). Siehe dazu auch den Manual-Eintrag bei php.net:

PHP follows Perl’s convention when dealing with arithmetic operations on character variables and not C’s. For example, in Perl ‚Z’+1 turns into ‚AA‘, while in C ‚Z’+1 turns into ‚[‚ ( ord(‚Z‘) == 90, ord(‚[‚) == 91 ). Note that character variables can be incremented but not decremented and even so only plain ASCII characters (a-z and A-Z) are supported.

Ach ja, auch wenns überhaupt nicht zum Thema passt: Wusstet ihr, dass man für den Ungleich-Operator != auch im Visual Basic-Style <> schreiben kann?

var_dump("123" <> 123); //bool(false)

Weitere Posts:

Dieser Beitrag wurde unter php, PHP-WTF, webdev veröffentlicht. Setze ein Lesezeichen auf den Permalink.

3 Antworten auf PHP WTF #6

  1. Fabian sagt:

    Was mich gerade irritiert ist dass deine zweite Schleife bis ‚yz‘ läuft. Das heißt ja, dass ‚z‘ + 1 == ‚aa‘ aber ‚aa‘ < ‚z‘ (und ‚z‘ < ‚za‘). Zeigt wieder einmal dass Rechenoperationen in PHP nicht die üblichen Eigenschaften haben und man höllisch aufpassen muss, wie überall beim Type Juggling.
    Ok, (‚z‘ + 1) ist natürlich immer noch 1, da ‚z‘ nach integer gecasted wird, das ganze geht nur mit dem ++ Operator, gerade getestet.
    Auch wenn es irgendwie ein cooles Feature ist, ich glaube ich werde das weiterhin nicht einsetzen, bei diesen Fallstricken.

  2. Gil Jingst sagt:

    Kann es sein, dass die Bilder hier nicht gehen?

  3. david sagt:

    Hm, bei mir is alles ok. Cache-Problem?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.