2010-10-23 139 views
0

我想我有一個功能有點了解,他們是如何工作..想法是從數據庫中獲取「用戶羣」,但我不希望當我寫的代碼埃維時間需要它,所以我決定把它放在功能上。PHP函數 - 不工作

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(); 

我需要的是$角色變量,我將使用IF()訪問權限授予不便。但是當我這樣做的時候,它顯示$角色是未定義變量(當我用if檢查時)。

對不起,可能是愚蠢的問題,但我做錯了什麼?

回答

4

添加return $role;到你的函數結束。

然後你可以在$role = get_role();的地方調用函數。

你的代碼不工作的原因稱爲變量作用域。您正在創建的$角色變量僅在該函數中可用。

通過添加上面的代碼,你從你的函數返回的$role值,並將其賦值給一個局部變量,你調用的函數。

您也可以聲明$roleglobal這將使它在任何地方都可用,但這被認爲是一種非常糟糕的做法。

+0

是的,那個範圍的東西...最後我明白了。謝謝! – arturs 2010-10-23 23:36:59

2

你忘了從函數返回:

return $row['role']; 

函數在PHP(和許多其他語言)開始自己的範圍 - 這意味着,僅內聲明的變量在函數內部存在的,不外。通過參數和返回值與沒有全局變量的「外部世界」進行通信的唯一方法。

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

現在,爲了讓您的值,可以使用:

$role = get_role(); 
+0

謝謝你的回答! – arturs 2010-10-23 23:39:53