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

Php 为什么函数protect()中的变量不输出任何内容?,php,mysqli,Php,Mysqli,我写这段代码是为了读取登录用户的访问级别,以便根据登录用户的访问级别保护对页面的访问 and do函数具有sessionloginid和$v但$v变量不输出任何内容 我需要在函数代码中编辑什么? 出现错误消息,如: 注意:未定义变量:v if(isset($_SESSION['sessionloginid']))// point to id of user logged in { $query = "SELECT * FRO

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

and 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就不存在了。它只存在于循环中,因此您必须在循环中调用函数,或者将更高范围内的变量设置为该值,以便可以在其他地方使用。

哪里是
$v
?哪儿也没有!这就是为什么它什么也不输出。如果您将错误报告设置为报告通知,您会看到这一点。缩进良好的代码可能也会使问题更加明显。谢谢您Glavić我使用全局变量和错误测量信息消失我编辑代码以匹配您的答案,但会出现错误消息说:注意:未定义变量:我假设您没有设置变量到五美元。再读一遍我说的谢谢我使用全局变量和错误度量信息消失好人!快乐编码