PHP基础加强系列一

胡三金 2017-06-09 10:46:03 265 0 comments

  1. 数据类型转换

    a.PHP默认自动向高精度转换。bool

    例如:

    4][[JQ7(D2TG~AP3T4OZV{N.png

    b.手动转换数据类型有三种方式。

    (1)使用内置函数settype();

    image.png

    注:这种方式会改变原有的数据类型

    (2)使用括号加类型的方式转换数据类型:(int)+变量

    image.png

    注:此方法不会改变原有数据类型

    (3)使用php类型转换函数:intval,floatval,strval

    image.png

    注:三种方法看自己喜好进行选择,但是第三种有局限,只有几种,而前两种更全面

    特殊的:

    image.png

    输出:

    image.png

    注:当一个字符串类型的数和bool类型相加的时候返回的是一个整形的2;

    image.png

    此时输出:

    image.png

    当两个字符串相加的时候就输出1了;

    注:此特殊情况下还是满足自动向高精度转换

    image.png

    输出的依然是:

    image.png


  2. 使用unset函数来销毁一个变量

    注:unset函数是彻底销毁一个变量,当在函数内部销毁一个全局变量时,仅仅是函数内部的变量被销毁,全局变量仍然存在。

    image.png

    注:输出20;虽然通过关键字global引用了全局变量a,但是在函数test内部的a被销毁了,外部全局变量a仍然存在。如果你想在函数内部彻底销毁全局变量,要使用GLOBALS全局数组。

    image.png

    注:这里有一个细节就是使用global关键字来引用全局变量,如果函数外部没有全局变量a,global会自动创建全局变量a,然后存入超全局变量GLOBALS数组中

    image.png

    注:此时在函数外部输出a就不会报错,因为global关键字已经自动创建了全局变量a.


  3. 函数内部对变量使用static关键字的时候,该变量只会被初始化一次;

    image.png

    在我没有公布结果的时候,你可以想想三次的输出结果是什么;

    由于在函数内部i只在第一次函数调用的时候初始化为0,所以第一次调用后i在内存中的数据区已经变成了1,第二次调用该函数,i并不会被初始化为0,而是由1执行++操作;以此类推,第三次是在第二次的结果上加1,所以最后的输出结果为1,2,3;不信邪的小伙伴可以自己试试;



  4. 使用PHP内置函数获取函数的参数,使用情况是当不确定传入函数的参数是多少的情况下使用;

    func_get_args(); //获取传入的所有参数,返回的是一个数组

    func_get_arg(); //获取指定的传入参数

    func_num_args(); //获取传入的参数的个数

    举一个小例子:假如我需要一个函数来求和,但是我传入的参数是任意的,可以两个,三个,四个,这个时候你该怎么写这个函数呢?

    image.png

    输入结果:

    image.png

    通过上面的结果你就知道三个函数的具体用法了;现在回到刚才提出的问题,来实现当输入不同的参数个数时如何求和

    image.png

    这里的microtime是我做效率测试用的,这个小技巧也推荐给大家,当你自己写了一个函数,你可以用它来测试效率,这样能优化你写的代码;毕竟一个好的程序员必须是能写出高质量的代码的;这一种是我直接使用foreach来便利数组求和,下面写一种执行效率很低的代码,然后对比差别;

    image.png

    然后对比ddTime和dbTime

    image.png

    输出结果:

    image.png

    通过结果你就能看出谁的执行效率更高咯;


转载请注明出处,谢谢!



标签
评论一下

评论列表

暂时没有评论,快来评论吧..