PHP - pasar array como parámetro de función

 
Vista:

pasar array como parámetro de función

Publicado por teenspirits (19 intervenciones) el 24/01/2006 22:03:48
Tengo que pasar un array como argumento a una función. entonces se me ocurre que lo mejor puede ser pasarlo por referencia (como en C). Lo que pasa es que el array está compuesto por objetos que constan de dos cadenas y un entero. Entonces para acceder a cada campo necesito avanzar el "puntero" una posición. Recuerdo que en C resultaba bastante sencillo ya que por ejemplo en este caso se incrementaba el puntero en tantos caracteres como tuviese cada cadena más lo que ocupa el entero. era al go así como puntero=puntero+strlen(cadena1)+strlen(cadena1)+sizeof(int);

Puedo hacer algo parecido en php?

Repito que el problema consiste en pasar un array como argumento en una función, y no lo consigo hacer de la manera convencional, es decir, igual que si estuviese pasando una variable.

De momento tengoel problema resuelto utilizando el array como variable global , de modo que no necesito pasarla como parámetro a la función, pero no me parece una forma correcta. Si sabeis cómo pues muchas gracias.

Salu2.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:pasar array como parámetro de función

Publicado por Mike79 (669 intervenciones) el 25/01/2006 17:36:04
No veo cual es el problema.

Para Pasar por referencia el arreglo tienes que indicarlo en la función, poniendo el amperson antes del parametro, por ejemplo:

function MiFuncion (&MiArreglo) {
.....

Pero en si, si no vas a modificar sus valores no tiene caso que lo hagas, igual lo puedes hacer pasandolo normalmente. Aquí no existen punteros, así que no puedes usar aritmetica de punteros como en C.

Si eso no te esta funcionando, entonces te pido un ejemplo, por que incluso he modificado el valor de arreglos de arreglos, y arreglos de objetos, unicamente pasandolos por referencia.

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pasar array como parámetro de función

Publicado por TeenSpirits (19 intervenciones) el 26/01/2006 00:37:23
Pues a ver si consigo solucionarlo (olvidandonos ya de punteros y de lo de antes, con mandar los arrays como argumentos de la función me conformo):

La funcion es esta tal cual (es para ordenar una matriz pero no te fijes en el codigo de la función ya que el error lo da ya en la llamada a la funcion):

-----------------------------------------------------------------------------------------------------------------------
function Ordenar($Lista)
{ $Lista_ordenada=array();
$indice=0;
$aux=new Pelicula("","",0);
while ($indice<count($Lista)-1)
{
if($Lista[$indice]->Titulo>$Lista[$indice+1]->Titulo)
{$indice=$indice+1;}
else
{$aux=$Lista[$indice];
$Lista[$indice]= $Lista[$indice+1];
$Lista[$indice+1]=$aux;
$indice=$indice+1;
}
}
array_push($Lista_ordenada,$Lista[count($Lista)-1]);
array_pop($Lista);
if (count($Lista)>1)
{Ordenar();}
else
{array_push($Lista_ordenada,$Lista[count($Lista)-1]);
array_pop($Lista);
}
return $Lista_ordenada;
}

----------------------------------------------------------------------------------------------------------------------

Así declaro los arrays:

---------------------------------------
$Lista = array();
$Lista_ordenada=array();
---------------------------------------

y esta es la llamada:

------------------------------------------------
$Lista_ordenada=Ordenar($Lista);
------------------------------------------------

A todo esto aclarar que utilizo el mismo nombre para las variables del programa ppal que para las que utilizo en la función (me refiero a $Lista y $Lista_ordenada), pero me imagino que es indiferente pues dentro de la función son variables locales a esta.

Y el resultado es el siguiente error (Warning: Missing argument 1 for ordenar() )

Y a partir de ahí todos los que eso connlleva.

gracias x tu ayuda. ;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pasar array como parámetro de función

Publicado por Mike79 (669 intervenciones) el 27/01/2006 05:24:30
He leido varias vecez tu post, pero apenas ahorita se me ilumino, el error no es como llamas a la función (Que la verdad me fui sobre eso al principio), el error es dentro de la función, más explicitamente en esta parte:

if (count($Lista)>1)
{Ordenar();}

¿Donde esta el parametro de la función?
En Ordenar, el parametro no es opcional.

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar