为什么'->'(12,b)给出错误?

时间:2018-08-07 08:44:19

标签: r

在R操作符中,也可以表示为函数调用,例如

<?php
require_once("db.php");

function check_input($r){
    $r=trim($r);
    $r=strip_tags($r);
    $r=stripslashes($r);
    return $r;
}

function get_salt($uid){
    $db=get_db();
    $stmt=$db->prepare("SELECT salt FROM login_details WHERE emp_id=?");
    $stmt->execute(array($uid));
    $r=$stmt->fetch(PDO::FETCH_ASSOC);
    return $r['salt'];
}

if (isset($_POST['uname'],$_POST['pwd'])){
    $u=check_input($_POST['uname']);
    $p=check_input($_POST['pwd']);
    $saltedpassword=md5(get_salt($uid).$p);
    try{
        $db=get_db();
        $stmt=$db->prepare("SELECT * FROM login_details WHERE emp_id=? && password=?");
        $stmt->execute(array($u,$saltedpassword));
        $r=$stmt->fetch(PDO::FETCH_ASSOC);
        if($r){
            if($r['status']=='1'){
                session_start();
                $access_level=$r['access_level'];
                $_SESSION['emp_id']=$r['emp_id'];
                $_SESSION['access_level']=$access_level;

                if ($access_level==0){
                    header("Location:emppages/");
                }
                if($access_level==1){
                    header("Location:hrpages/");
                }
                if($access_level==2){
                    header("Location:adpages/");
                }
            }else{
                header("Location:index.php?err=1");
            }
        }
    }catch(PDOException $e){
        die("Database error: ".$e->getMessage());
    }
}else{
    header("Location:index.php");
}
?>

'<-'(b, 12)
为什么以下给出错误:

b <- 12

? (代码'->'(12, b) 正常工作。)

1 个答案:

答案 0 :(得分:17)

因为解析器将运算符“转换”为函数,并且左右分配都解析为<-函数。没有权限分配功能。

e <- quote(b <- 12)
as.list(e)
#[[1]]
#`<-`
#
#[[2]]
#b
#
#[[3]]
#[1] 12

e <- quote(12 -> b)
as.list(e)
#[[1]]
#`<-`
#
#[[2]]
#b
#
#[[3]]
#[1] 12