PHP老师没教过你的那些知识点

另类的写法有惊喜

我们在阅读某些源代码的时候会发现有一种另类的写法,比如

//异常写法

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); //输出true

var_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); // 输出57

sprintf("%.2f",$f * 100); //输出58.00

精度丢失的问题在其他语言中有会有,但是在PHP这种弱类型的语言中更加需要注意。

其实上述说到的问题在PHP手册中都已经提及到了,手册翻百遍打码如有神,一定的细心加一定的经验,你就能够在开发的路上一路填坑一路前行。

时间: 2024-10-17 18:51:05

PHP老师没教过你的那些知识点的相关文章

50个查询系列-第七个查询:查询学过“叶平”老师所教的所有课的同学的学号、姓名

效果是: 我们查出来叶平的教的课的id是002和016.我们选出的学生同时有这两门课. 如下: ------------------------------------------------------------------------------------------------------------------------------------------------- 具体的做法: 第一步:查找叶平的id select  tblteacher.TeaId from tblteac

程序的效率 ———— 宝玉老师手把手教学生

宝玉老师在南通大学软件工程教学改革QQ群里,手把手教学生. ===================== 举个例子,你的程序可以写成这样: (1) function add() { int a1 = 1; int a2 = 2; int a3 = 3; return a1 + a2 + a3; } 也可以写成这样: (2) function add(int a1, int a2, int a3) { return a1 + a2 + a3; } 也可以写成这样: (3) function add(

查看本学期老师所教的课程

import re import requests import pymysql base_url = "http://202.192.240.54/kkcx/" # 连接mysql db = pymysql.connect(host="localhost",user="root",passwd="root",db="course_teacher",charset="utf8") cur

hdu 1799 原来还有公式。。没教过。。C(n)(m)=C(n-1)(m)+C(n-1)(m-1)

循环多少次? Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3096    Accepted Submission(s): 1144 Problem Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次OP运算

idou老师带教你学Istio 03: istio故障注入功能的介绍和使用

故障注入测试 故障注入测试顾名思义就是当被测试应用部分组件或功能出现潜在故障时其本身的容错机制是否正常工作,以达到规避故障保证正常组件或功能的使用.Istio提供了HTTP故障注入功能,在http请求转发的过程中,用户可以设定一个或多个故障.故障注入的修改作用于Virtual Service,共有两种不同的故障模式abort和delay. 类型 所属 描述 abort HTTPFaultInjection.Abort 中断Http请求并且返回既定的错误状态码给请求方 delay HTTPFaul

龙应台:幼稚园大学

(转载  作者:龙应台) 这是一班大三的学生:聪慧.用功.循规蹈矩,标准国立大学的好学生. 看完期末考卷,批完论文报告,我把总成绩寄出,等着学生来我我:零分或是一百分,他们总得看着卷子的眉批,与我印证讨论过之后,才能知道为什么得了一百分或零分. 假期过去了,新学期开始了,学期又结束了. 学生来找我聊天.吃消夜.谈功课:就是没有一个人问起成绩的事. 有一个成绩应该很好的学生,因为论文的注脚写得零乱散漫,我特意大幅度地降低了他的分数,希望他来质疑时告诉他一个教训:作研究,注脚与正文一样重要. 但是他

什么是Complement(补码)?

大学上过计算机原理课程的朋友都接触过补码这个概念,不过当时书上所教授的内容都是以二进制作为前提,即所谓的2的补码(2's Complement).近来看TCP/IP Volume 1时,又接触到"1的补码"这个概念,忽然发现其实还不太明白补码到底是什么意思,故查阅资料记录之. 资料来源:维基百科 术语解释:Radix -- 基数,在本篇文章的范畴内等价于"进制" 定义:给出长度为n的数值y,则y的以基数b的补码为: bn - y   (即 b的补码) 水平有限,翻译

转载:传说中的T检验

第二周结束:传说中的T检验 小耿2014-01-21 10:58 本文和上一篇笔记一样:语言十分啰嗦.请大家忍耐…… 以前我不懂统计的时候(现在也不懂),只知道数据出来了要做三件事:1,检验一下数据是否符合正态分布:2,如果符合正态分布,就进行T检验,看P值是否小于0.05:3,如果数据不符合正态分布,就用另外的“非参数检验”.但是我完全不明白这些名词背后是什么原理. 这些原理是这样的: 举个例子:好比我们有一个H0假设(不希望出现的假设)说:“抽烟人群的肺活量和非抽烟人群没有差异”.我们已经知

菜鸟谈算法和数学对写程序的影响

首先声明,本人在数学和算法上没什么造诣,只是发表一下自己的观点吧,最近一段时间在学习算法.引用一下我大学的时候的一位老师(刘伟)的一篇文章,这是他在CSDN上的一篇文章,他也一直是我人生中的偶像.http://blog.csdn.net/lovelion/article/details/1350127 因为自己进公司的以来,一直从事的是C#和JAVA方面的开发,而且框架都是调用公司的框架,所以一直感觉数学在编程当中不起到什么作用.PS:不是数学的作用不大,而是自己确实对这方便很菜,所以才会有这么