为什么函数protect()中的变量不输出任何内容


why variable in function protect( ) output nothing?

我写这段代码是为了读取登录用户的访问级别,因此,根据登录的用户的访问等级来保护对页面的访问

do函数有sessionloginid$v,但$v变量不输出任何内容我需要在函数代码中编辑什么?出现错误消息,说明:
注意:未定义的变量:v

 if(isset($_SESSION['sessionloginid']))// point to id of user logged in
        {  
        $query =
        "SELECT * 
        FROM privilege 
        where login_id='".$_SESSION['sessionloginid']."'  " ;

    $access_level= array();
    $result = mysqli_query($link,$query) or die('');
    while($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
            {

         $_SESSION['sessionloginid']= $row['login_id']; 
        $_SESSION['sessionaccess']= $row['AccessLevel'];//output 
         $access_level[]=$_SESSION['sessionaccess'];
        print_r ($access_level);//Array([0]=>1)Array([0]=>1[1]=>2) 
        }   }
foreach($access_level as $k => $v)
    {
        print_r($v) ;// output 12 
    }
function protect(){
 if($_SESSION['sessionloginid']==true && $v !=1)
 {
 echo $v; //output nothing
 }
}
    protect($v);

您需要传入$v作为函数参数

protect($v);

在当前范围内,一旦foreach循环结束,$v就不存在了。它只存在于循环中,因此您必须调用循环中的函数,或者将更高范围内的变量设置为该值,以便在其他地方使用它。