PHP函数 - 不起作用

时间:2010-10-23 23:26:57

标签: php function

我想我对功能及其工作方式有一点了解。想法是从数据库中获取“用户组”,但我不想在需要时编写代码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检查时)。

对不起可能是愚蠢的问题,但我做错了什么?

2 个答案:

答案 0 :(得分:4)

return $role;添加到您的函数末尾。

然后,您可以在$role = get_role();处调用该函数。

您的代码无法工作的原因称为变量范围。您正在创建的$ role变量仅在函数中可用。

通过添加上面的代码,您可以从函数中返回$role的值,并将其分配给您调用函数的局部变量。

您也可以将$role声明为global,这将使其在任何地方都可用,但这被视为非常糟糕的做法。

答案 1 :(得分:2)

你忘了从函数返回:

return $row['role'];

PHP(以及许多其他语言)中的函数启动它们自己的作用域 - 这意味着在内部声明的变量只存在于函数内部,而不是在函数内部。与没有全局变量的“外部世界”进行通信的唯一方法是通过参数和返回值。

请注意,您不再需要$role = $row['role'];

为了立即获得您的价值,请使用:

$role = get_role();