php的一些小知识

7.获取毫秒级时间

function getMicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ceil(($usec + $sec) * 1000);
}
 

6.使用常量前,应该先定义常量,比如 define('HELLO', '欢迎')

如下,如果不定义而直接使用,会输出字符串HELLO,同时php会抛出一个Notice提示

  var_dump(HELLO);

 

5.file_get_contents

一直以为这是用于读取文件内容的函数,没想到它还可以用来读取网页

  var_dump(file_get_contents('https://www.baidu.com'));

 

4.去除字符串首尾全半角空格

当遇到全角空格时,trim函数已经不能胜任,我们需要其他方式来去除字符串首尾空格,如下所示

  $str = '  《清除前后全半角空格》  ';

  var_dump(mb_ereg_replace('^(?:\s| )+|(?:\s| )+$', '', $str));

  var_dump(mb_ereg_replace('^[\s]+|[\s]+$', '', $str));

 

3.empty和isset

empty对于空字符串、整型0、浮点型0.0、字符串0、布尔型 false、null、空数组,等的判断结果为true,例如

  var_dump(empty(''));

isset用于判断变量是否已声明。需要注意的是,当变量值为null时,isset会返回false,如下所示

  $a = null;

  var_dump(isset($a));

 

2.循环中的引用赋值,在使用完后最好销毁变量

比如

  $arr = [1, 2, 3];

  foreach ($arr as &$item) {

    echo "{$item}";

  }

  //unset($item);//及时销毁引用赋值变量

  foreach ($arr as $item) {

    echo "{$item}";

  }

运行以上代码,结果为123122,这就是因为$item在第一个foreach结束后,没有被销毁造成的

现在我们来还原一下案发过程:

  第一个foreach结束后,把$arr数组中第三个元素的引用赋给了$item;

  第二个foreach,第一次循环时,把1赋给了$item,由于$item是引用,因而$arr第三个元素的值变成了1,此时$arr值为[1,2,1]

  第二个foreach,第二次循环时,把2赋给了$item,同理,此时$arr值为[1,2,2]

  最终,第二个foreach第三次循环时,输出$arr中第三个元素的值,也就是[1,2,2]中的最后一个2

合理的写法是使用完引用赋值后,及时销毁变量

 

1.双等号(==)和三等号(===)

php双等号不比较数据类型,只比较值;而三等号会比较数据类型和值

以下几个值双等号结果为true:

  $a = null;

  $b = '';

  $c = 0;

  $d = false;

  var_dump($a == $b && $b == $c && $c == $d);

常规情况下,建议使用三等号,因为双等号有时会造成一些bug,比如:

  var_dump('12ab' == 12);

这是由于字符串和整型进行比较时,会先把字符串转化为整型

posted @ 2018-12-07 17:30  阿沐66  阅读(183)  评论(0)    收藏  举报