2012-04-18 4 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

+0

@Marc: почему бы не прочитать руководство, он оставил ссылку, чтобы направить туда –

+0

Привет, Shakti. Ссылка была добавлена ​​после того, как я разместил вопрос ... – Marc

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); 
Смежные вопросы