2012-04-18 19 views
5

Tengo una función que rellena una matriz que se creó antes de que se inicie la función. Para que la población funcione, utilicé 'global' en mi función. Todo está funcionando bien con la situación aquí abajo:PHP - Cómo pasar una variable global a una función

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

my_function($parameter); 

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

Lo que me gustaría es pasar la matriz que se supone que se utilizará en la función cuando se llama a la función. La idea sería hacer algo como esto:

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

Además de acuerdo a lo que he leído, utilizando global no es tal vez el mejor que puede hacer ... vi algunas personas que utilizan el signo & en algún lugar y diciendo que es mejor. Pero no lo entiendo y no encuentro información sobre ese 'método' ... Espero que esté claro. Gracias de antemano por sus respuestas. Aclamaciones. Marc

Respuesta

9

Se llama 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'); 

Ahora se cambiará la matriz omitido.

+0

Helo Dan. Gracias por intentar ayudar. ¿Cómo se llama este y el signo en esa situación y cómo funciona? Y cuando llame a la función ¿tengo que poner también el signo? – Marc

+0

@Marc: ¿por qué no leyó el manual, dejó un enlace para dirigir allí –

+0

Hello Shakti. El enlace fue agregado después de haber publicado la pregunta ... – Marc

1

El uso de & significa pass by reference.

Por ejemplo:

$x = '123'; 

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

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

En su caso, se puede utilizar:

$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

puede escribir su función de esta manera:

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

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