isset($file) or $file = 'index';在别人的程序中看到了这么一句代码,不明白是啥意思,有懂的解释下

解决方案 »

  1.   

    isset — 检测变量是否设置
      

  2.   

    isset 测试变量是否赋值
    or是或的意思,只要有一个为真就是真
      

  3.   

    是否存在变量file 或者 变量file的值为index
      

  4.   

    请给出上下文, 只看这句话感觉meaningless.
      

  5.   

    我把上下文的代码贴出来吧 请说说这句代码的总用 而不是isset()和or的用法
    $session = new dsession();
    require DT_ROOT.'/admin/global.func.php';
    require DT_ROOT.'/include/post.func.php';
    require_once DT_ROOT.'/include/cache.func.php';
    //就是这句
    isset($file) or $file = 'index';
    //就是这句
    $_destoon_admin = isset($_SESSION['destoon_admin']) ? intval($_SESSION['destoon_admin']) : 0;
    if($action != 'import') admin_log();
    $_founder = $CFG['founderid'] == $_userid ? $_userid : 0;
    $_catids = $_childs = '';
    $_catid = $_child = array();
    if($file != 'login') {
    if($_groupid != 1 || $_admin < 1 || !$_destoon_admin) msg('', '?file=login&forward='.urlencode($DT_URL));
    if(!admin_check()) {
    admin_log(1);
    $db->query("DELETE FROM {$db->pre}admin WHERE userid=$_userid AND url='?".$DT_QST."'");
    msg('警告!您无权进行此操作');
    }
    }
      

  6.   


    不是测试是否赋值   而是 是否存在这个变量$a;
    if(isset($a)) echo '1';
    $a=1;
    if(isset($a)) echo '1';
      

  7.   

    这个$file应该是
    require DT_ROOT.'/admin/global.func.php';
    require DT_ROOT.'/include/post.func.php';
    require_once DT_ROOT.'/include/cache.func.php';
    文件内的
      

  8.   

    isset($file) or $file = 'index';
    等同于
    if(!isset($file)) 
      $file = 'index';无聊人的无聊写法。
      

  9.   

    1.isset判断$file这个变量是否存在
    2.如果$file不存在就给它赋值'index'注意两点:
    1.后面是个赋值等号而不是逻辑判断(==)
    2.or的执行优先级低于=,=低于函数上面的语句相当于$file=isset($file)?$file:'index';
      

  10.   


    $a是在require DT_ROOT.'/admin/global.func.php';
    require DT_ROOT.'/include/post.func.php';
    require_once DT_ROOT.'/include/cache.func.php';
    这三个文件里定义的一个变量。
    这句话的意义在于检查$a是不是已经在以上的三个文件中被赋值,如果没有赋值就给它默认值'index'.这种用or连接两个表达式的表达式运行的原理是: 如果or前面的表达式为真, 后面的表达式不被执行。如果前面的表达式为假, 则后面的表达式会被执行。