簡體   English   中英

PHP函數-不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM