Woooowen You can do anything you set your mind to, man

温故而知新之PHP手册(1)

最近发现自己对于PHP的手册记忆模糊了.因此抽空又把PHP的手册给撸一遍了.温故而知新,整理下这次撸手册的收获.

  • 1.不要使用AND 和 OR 尽量使用 && 和 || 来替代,因为 && 和 || 的优先级比AND 和 OR要高,连 = 的优先级都比AND 和 OR要高.
    //这个还是要记录下,虽然以前就知道.
    $c = $a or $b  ($c = $a) or $b 同义.
    $c = $a || $b  $c = ($a or $b) 同义.
  • 2.不要对each() 中需要遍历的数组赋值 例如
    $a = array('a','v','c');
    while(list($b,$c) = each($a)){          
        $e = $a;
        echo $b;
        echo $c;
    }
    //数组在赋值的时候会重置指针,上面代码会无限循环
  • 3.传递参数使用sub.x 的时候,PHP会自动转成subx因此应该使用$GET['sub_x']来获取值

  • 4.const 跟 define 都可以用来定义常量

    区别:

    1.const 在PHP5.3之后出现,当使用namespace的时候只能使用const来定义常量.使用define是无效.

    2.const在内存中只有一份拷贝,而define相当于文本替换,在内存中会存在多份拷贝,因此const更加节约内存.

    3.使用const速度更快,define是函数,使用define的时候PHP需要去函数表中查找调用等过程. 而const则是直接分配一个zval或者hashtable然后给他.定义其flags为const_cs.所以使用const比define少了个查找个调用的过程.因此要效率要高.const是语言结构.

    4.const大小写敏感,而define大小写不敏感

    5.在来几个s o上面的例子

        const BIT_5 = 1 << 5;  //PHP5.6之后可以这么做
        define('BIT_5', 1 << 5);//一直可以
        //define还可以这么写
        for ($i = 0; $i < 32; ++$i) {
            define('BIT_' . $i, 1 << $i);
        }
        //const不能这么定义
        if(1){
            const XX = 'xx';
        }
        //define可以
        if(1){
            define('XX','xx');
        }
    
  • 5.isint只能用来判断是否int类型,数字字符返回false,如果判断数字或者数字字符是否为数字使用isnumeric

    var_dump(is_int(23)); //bool(true)
    var_dump(is_int("23")); //bool(false)
    var_dump(is_int(23.5)); //bool(false)
    var_dump(is_int(NULL)); //bool(false)
    var_dump(is_int("")); //bool(false)         
  • 6.FUNCTIONMETHOD的不同在于前者只会返回函数名称,后者会连类名一起返回
    class test{
        function aa(){
            echo __FUNCTION__;//aa
        }
        function bb(){
            echo __METHOD__;//test::bb
        }
    }
    $aaa = new test();
    $aaa->aa();
    $aaa->bb();
  • 7.比较运算符
    var_dump("10" == "1e1"); // 10 == 10 -> true
    var_dump(100 == "1e2"); // 100 == 100 -> true
  • 8.三元运算符是从左往右计算的.
echo 1 ? 1 : 0 ? 2 : 3; // echo 2
  • 9.``,PHP尝试将反引号中得内容作为linux命令来执行,并输出信息的返回,类似shell_exec();
$a = `ls`;
echo $a;

注意: 反引号运算符在激活了安全模式或者关闭了 shell_exec() 时是无效的。与其它某些语言不同,反引号不能在双引号字符串中使用。

  • 10.字符变量可以递增,但是不能递减
    $a = '9d9';
    for($i = 0; $i<10; $++){
        $a++;
    }
    //echo $a;你知道a得值是多少么?请看第7条
  • 11.数组比较,数组中的单元如果具有相同的键名和值则比较时相等
    $a = array("apple", "banana");
    $b = array(1 => "banana", "0" => "apple");

    var_dump($a == $b); // bool(true)
    var_dump($a === $b); // bool(false)

Woooowen 浙ICP备15013647号