最近在搞一个CMS的二次开发,多次在脚本中看到这样的脚本$_POST[loginname] && $_POST[loginname]=filtrate($_POST[loginname]);
$_POST[loginpwd] && $_POST[loginpwd]=filtrate($_POST[loginpwd]);谁能说说这个呢?怎么理解呢?

解决方案 »

  1.   

    上下文是什么?
    filtrate() 好像不是php的内置函数把。
    $_POST[loginname] && $_POST[loginname]=filtrate($_POST[loginname]);
    可以是做这样的事情:
    如果$_POST[loginname]存在,那么会把$_POST[loginname]的值通过filtrate()函数处理下。
      

  2.   

    这种写法其实不推荐,因为会产生notice级错误
      

  3.   

    楼上两个有没有实际做过这种语法的开发呢
    <?php
    $a = false;
    $b = 1;
    $a && $b = 3;
    echo $b;输出是1
      

  4.   


    $a && $b = 3;//等价于这样:
    /**if($a)
    {
    $b=3;
    }*/
      

  5.   

    手册上关于逻辑运算符的评论
    //Re brad at bradleyproctor dot comif ($foo) {
       $foo = 5;
    }//Can't be replaced with
    $foo or $foo = 5;//But it can be replaced with
    $foo and $foo = 5; 
    我想听听这个短路到底是怎么回事
      

  6.   

    $_POST[loginname] && $_POST[loginname]=filtrate($_POST[loginname]);//可以理解为 ,估计之前学c 的,有点遗毒.
    if( $_POST[loginname]  )
    {
    _POST[loginname]=filtrate($_POST[loginname])
    }//1我个人鄙视这种写法,很反感在这种无聊的事上去耗掉过多的事.万一那哪天,碰到一个右序优先的解释器,是不是代码全重写一遍.
    //2 既然这样写了,干脆再加点东西.
    isset($_POST[loginname]) && $_POST[loginname] && $_POST[loginname]=filtrate($_POST[loginname]);