我想我对功能及其工作方式有一点了解。想法是从数据库中获取“用户组”,但我不想在需要时编写代码evey时间,所以我决定把它在功能上。
function get_role()
{
$user_id = $_SESSION['login_ok'];
$res = mysql_query('SELECT role FROM users WHERE id = "'.$user_id.'"') or mysql_error();
$row = mysql_fetch_array($res);
$role = $row['role'];
}
然后当我需要它时
get_role();
我需要的是$ role变量,我将在if()中使用它来授予对smth的访问权限。但是当我这样做时,它表明$ role是 Undefined variable (当我用if检查时)。
对不起可能是愚蠢的问题,但我做错了什么?
答案 0 :(得分:4)
将return $role;
添加到您的函数末尾。
然后,您可以在$role = get_role();
处调用该函数。
您的代码无法工作的原因称为变量范围。您正在创建的$ role变量仅在函数中可用。
通过添加上面的代码,您可以从函数中返回$role
的值,并将其分配给您调用函数的局部变量。
您也可以将$role
声明为global
,这将使其在任何地方都可用,但这被视为非常糟糕的做法。
答案 1 :(得分:2)
你忘了从函数返回:
return $row['role'];
PHP(以及许多其他语言)中的函数启动它们自己的作用域 - 这意味着在内部声明的变量只存在于函数内部,而不是在函数内部。与没有全局变量的“外部世界”进行通信的唯一方法是通过参数和返回值。
请注意,您不再需要$role = $row['role'];
。
为了立即获得您的价值,请使用:
$role = get_role();