先执行!empty($_POST),如果为假,就会短路,不会执行后面的

解决方案 »

  1.   


    为什么会短路?我记得以前看到过某本书上说“我们是无法确定逻辑与两边表达式的执行顺序的”,也即根据不同CPU,可能会有不同的顺序,那用这种所谓短路的表达式岂不是很危险?
      

  2.   

    这个代码等价于
    if(!empty($_POST))
    {
        Add_S($_POST);
    }
      

  3.   

    !empty($_POST)  && Add_S($_POST);
    这句代码要是!empty($_POST)不为真的话,永远也执行不到Add_S($_POST)上去的。只有第一个条件符合了,才会继续向下判断的,称之为短路。
      

  4.   

    感觉这是一个很危险的语法。不过由PHP编译应该不会有后遗症。
    如果某个程序具有智能化的编译处理(比如根据表达式的复杂程度或执行效率来决定哪个表达式先判断),那就麻烦了。
      

  5.   


    你说的那是编译类型的语言,php是一种解释类型的语言,执行顺序是php引擎说了算的。
      

  6.   

    if(!get_magic_quotes_gpc())
    {
    Add_S($_POST);
    Add_S($_GET);
    Add_S($_COOKIE);
    }