2013-03-25 30 views
0

如果可以的話,我會進一步詳細說明,但是我遇到的主要問題是我無法訪問函數以外的變量。我已經嘗試了以下兩種方法。訪問一個函數以外的變量

這裏是我的源:

function register($rand, $code) { 
    global $rand, $access_token; 
    if ($code == $access_token) 
     $rand = rand('100000','1000000'); 
} 

echo $rand; 
+0

我看不到任何你稱之爲函數的地方? – 2013-03-25 06:09:41

+1

如果您調用該函數,應該可以正常工作。 http://phpfiddle.org/main/code/gz9-x72 – 2013-03-25 06:09:59

+0

使用全球我不應該太.. – 2013-03-25 06:10:11

回答

1
function register($rand, $code) { 
    if ($code == $access_token) 
     $rand = rand('100000','1000000'); 
} 

然後調用函數第一

register('1','2'); 
echo $rand; 
+0

對不起,但是當調用register(1,2)時,這些數字代表什麼?我不能只把寄存器($ rand) – 2013-03-25 06:13:25

+0

從第一個代碼塊中刪除'echo $ rand;'; – 2013-03-25 06:13:25

+0

意味着你從你的函數中傳遞$ rand和$ code參數的值.. – 2013-03-25 06:14:38

0

請考慮使用參數,而不是使用$ GLOBALS或使用全局變量$ VAR,因爲其推薦的[看看這些問題:one & two]

function register($rand, $code, $access_token) { 
    if ($code == $access_token){ 
     $rand = rand('100000','1000000'); 
    } 
    return $rand; 
} 

echo register($rand, $code, $access_token); 
0

我想它應該運行正常,如果您在訪問$rand變量之前調用函數。

function register($rand, $code) { 
    global $rand, $access_token; 
    if ($code == $access_token) { 
     $rand = rand('100000','1000000'); 
    } 
    echo "\nInside Function = ".$rand; 
    echo $access_token; 
} 

register(100, ''); 
echo "\nOutside Function = ".$rand; 
1

可能是幫助你

function register($rand, $code) { 
    global $rand, $access_token; 
    if ($code == $access_token) { 
     $rand = rand('100000','1000000'); 
    } 



return $rand; 
} 

回聲寄存器($蘭特,$代碼);

0

您必須在設置$ rand之前調用該函數。調用register()之前函數中的全局$ rand不會設置任何值。

<?php 
    function register($rand, $code) { 
     global $rand, $access_token; 
     if ($code == $access_token) 
      $rand = rand('100000','1000000'); 
    } 
    register('x', 'y'); 

    echo $rand; 
?> 

如果PHP在調用函數之前設置所有全局值,那麼請考慮以下內容。 $ rand將被設置爲什麼?只有在調用其中一個函數時纔有意義。

<?php 
function a() { 
global $rand = 1; 
} 
function b() { 
global $rand = 2; 
}