2012-04-18 45 views
5

Tôi có một hàm điền một mảng được tạo trước khi hàm được khởi chạy. Để làm cho dân số làm việc, tôi đã sử dụng 'toàn cầu' trong chức năng của mình. Mọi thứ đều hoạt động tốt với tình huống dưới đây:PHP - Cách chuyển một biến toàn cầu sang hàm

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

my_function($parameter); 

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

Điều tôi muốn là chuyển mảng được sử dụng trong chức năng khi gọi chức năng. Ý tưởng này sẽ được để làm một cái gì đó như thế này:

$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'; 
} 

Ngoài ra theo những gì tôi đọc, sử dụng toàn cầu là có lẽ không phải là điều tốt nhất để làm ... Tôi thấy một số người sử dụng dấu hiệu & đâu đó và nói rằng nó tốt hơn. Nhưng tôi không hiểu và không tìm thấy thông tin về 'phương pháp' đó ... Hy vọng tôi rõ ràng. Cảm ơn bạn trước cho câu trả lời của bạn. Chúc mừng. Marc

Trả lời

9

Nó được gọi là 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'); 

Bây giờ các mảng bỏ qua sẽ được thay đổi.

+0

Helo Dan. Cảm ơn bạn đã cố gắng để giúp đỡ. Làm thế nào là điều này và dấu hiệu được gọi là trong tình hình đó và làm thế nào nó hoạt động? Và khi gọi hàm, tôi có phải đặt ký hiệu không? – Marc

+0

@Marc: tại sao không đọc hướng dẫn sử dụng, anh ấy đã để lại một liên kết để chỉ đạo ở đó –

+0

Xin chào Shakti. Liên kết đã được thêm sau khi tôi đăng câu hỏi ... – Marc

1

Sử dụng & có nghĩa là pass by reference.

Ví dụ:

$x = '123'; 

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

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

Trong trường hợp của bạn, bạn có thể sử dụng:

$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

bạn có thể viết hàm của bạn như thế này:

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

$listOne = my_function($listOne); 
print_r($listOne); 
Các vấn đề liên quan