[英]php functions - doesn't work
我想我對功能及其工作原理有一些了解。想法是從數據庫中獲取“用戶組”,但是我不想在需要時編寫代碼傳送時間,因此我決定將其投入功能。
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是未定義的變量 (當我使用if進行檢查時)。
抱歉,您可能會提出愚蠢的問題,但我做錯了什么?
添加return $role;
到您的功能結束。
然后,您可以執行$role = get_role();
您在哪里調用函數。
您的代碼無法正常工作的原因稱為變量范圍。 您正在創建的$ role變量僅在該函數內可用。
通過添加上面的代碼,您可以從函數中返回$role
的值,並將其分配給調用該函數的局部變量。
您也可以將$role
聲明為global
,以使其在任何地方都可以使用,但這被認為是非常不好的做法。
您忘記了從函數返回:
return $row['role'];
PHP(以及許多其他語言)中的函數開始其自己的作用域-這意味着在內部聲明的變量僅存在於函數內部,而不存在於外部。 在沒有全局變量的情況下與“外部世界”通信的唯一方法是通過參數和返回值。
注意,您不再需要$role = $row['role'];
。
為了立即獲得價值,請使用:
$role = get_role();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.