PHP老師沒教過你的那些知識點

來源:互聯網
上載者:User

標籤:

另類的寫法有驚喜

我們在閱讀某些原始碼的時候會發現有一種另類的寫法,比如

//異常寫法if(false == $result) //正常寫法if($result == false)

其實這是一種很聰明的寫法,它可以很大程度上杜絕手誤造成的嚴重bug。 假如我們在正常方法中把 == 誤寫成 = ,那麼if($result = false) 就會恒定返回true,導致在實際運行中產生未知的Bug,如果使用異常的寫法出現手誤變成時if(false = $false) ,編輯器會拋出一個error,我們就可以及時發現並修複問題。

‘<?php’開始前不要有空行,php指令碼結尾的 ‘?>’ 盡量省略

假如有一個檔案在 ?> 後有一個空白行,那麼你在使用 session_start() 等方法時,會返回一個警告headers already sent by xxx ,這是因為 session_start() 要求使用前不能有任何輸出。 同理 <?php 前的空行也會存在同樣的問題。

字串和數字在一起時,要留神var_dump(‘a‘.0); //返回error,語法錯誤解決的方案比較簡單,只要在 .串連左右加上空格就可以防止語法錯誤。var_dump (‘abc‘ == 0); //輸出truevar_dump (‘1abc‘ == 0); //輸出false

這個例子中輸出true是不是讓你大吃一驚,其實php中將字串和數字做比較時,會把字串強制轉換為int性,轉換規則為 如果字串是數字開頭,那麼取開頭數字作為轉換結果,如果開頭不是數字那麼就為0

字串的運算,你惹不起for ($i = ‘a‘; $i <= ‘z‘; ++$i) {    echo "$i ";}你以為會輸出從a到z?那你就錯了,亮瞎你的輸出結果如下:.

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

時刻小心精度丟失的情況$f = 0.58;echo intval($f * 100); // 輸出57sprintf("%.2f",$f * 100); //輸出58.00

 

精度丟失的問題在其他語言中有會有,但是在PHP這種弱類型的語言中更加需要注意。

其實上述說到的問題在PHP手冊中都已經提及到了,手冊翻百遍打碼如有神,一定的細心加一定的經驗,你就能夠在開發的路上一路填坑一路前行。

PHP老師沒教過你的那些知識點

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.