2012-04-18 64 views
5

我有一個函數可以填充在函數啓動之前創建的數組。爲了讓人口發揮作用,我在自己的職能中使用了「全球」。一切工作正常與這裏下面的情況:PHP - 如何將全局變量傳遞給函數

$parameter = 'something'; 
$listOne = array(); 

my_function($parameter); 

function my_function($para) { 
    global $listeOne; 
    ...some code 
    $listeOne[0] = 'john'; 
    $listeOne[1] = 'lugano'; 
} 

我想什麼是傳遞一個應該調用函數時,在函數中使用數組。這個想法是做這樣的事情:

$parameter = 'something'; 
$listOne = array(); 
$listTwo = array(); 

my_function($listOne, $parameter); 
...some code 
my_function($listTwo, $parameter); 

function my_function($list, $para) { 
    ...some code 
    $list[0] = 'john'; 
    $list[1] = 'lugano'; 
} 

另外根據我讀,利用全球的也許不是最好的事情......我看到使用&標誌的地方,並說這部分人更好。但我不明白,也沒有找到有關'方法'的信息......希望我清楚。預先感謝您的回覆。乾杯。馬克

回答

9

這就是所謂的referencing

$listOne = array(); 

function my_function(&$list, $para) { 
    ...some code 
    $list[0] = 'john'; 
    $list[1] = 'lugano'; 
} 
my_function($listOne, $parameter); 

print_r($listOne); // array (0 => 'john', 1 => 'lugano'); 

現在省略陣列將被改變。

+0

Helo Dan。感謝您的幫助。在這種情況下,這個&符號如何被調用?它是如何工作的?當調用函數的時候,我還必須把&符號放在哪裏? – Marc 2012-04-18 10:42:00

+0

@Marc:爲什麼不閱讀手冊,他留下了一個鏈接,直接在那裏 – 2012-04-18 10:42:52

+0

你好Shakti。這個鏈接是在我發佈這個問題之後添加的... – Marc 2012-04-18 10:44:56

1

使用&意味着pass by reference

例如:

$x = '123'; 

function changeX(&$data){ 
    $data = '1'; 
} 

echo $x; //x should print out as 1. 

在你的情況,你可以使用:

$parameter = 'something';  
$listOne = array(); 
$listTwo = array(); 

my_function($listOne, $parameter); 
my_function($listTwo, $parameter); 

function my_function(&$list, $para) { 
    $list[0] = 'john'; 
    $list[1] = 'lugano'; 
} 
1

你可以寫你的函數像這樣:

$listOne = array(); 
my_function($list = array()) 
{ 
array_push($list, 'john'); 
array_push($list, 'lugano'); 
return $list; 
} 

$listOne = my_function($listOne); 
print_r($listOne);