Foros del Web » Programando para Internet » PHP »

Llamada de retorno con parametros adicionales

Estas en el tema de Llamada de retorno con parametros adicionales en el foro de PHP en Foros del Web. Tengo una duda... Como ingreso los parámetros adicionales a la función que quiero ejecutar como callback??? Por ejemplo: Código PHP: function  llamada_retorno ( $variable ,  ...
  #1 (permalink)  
Antiguo 11/07/2011, 11:42
Avatar de rusoftware  
Fecha de Ingreso: abril-2004
Ubicación: Rosario - Argentina
Mensajes: 1.083
Antigüedad: 20 años, 7 meses
Puntos: 2
Pregunta Llamada de retorno con parametros adicionales

Tengo una duda... Como ingreso los parámetros adicionales a la función que quiero ejecutar como callback???

Por ejemplo:
Código PHP:
function llamada_retorno($variable$lenght){
    if (
is_array($variable)) {
        return 
array_map("llamada_retorno"$variable);
    }else{
        
$variable substr($variable,0,$lenght);
    }
    return 
$variable;

Si a esa función le paso una cadena normal, todo va bien, por ej:
Código PHP:
echo llamada_retorno("hola mundo"7);
// imprime "hola mu" 

En cambio si intento pasarle un array, por ejemplo del siguiente modo:
Código PHP:
$arr[0]="hola mundo";
$arr[1]="hello world";
echo 
llamada_retorno($arr,7); 
Obtengo un error de Missing argument lógico, ya que no le estoy pasando el segundo parámetro a la función.


Tal vez sea algo muy básico, pero la verdad es que llevo horas googleando y no doy con la solución.

Desde ya, muchas gracias!!!
  #2 (permalink)  
Antiguo 11/07/2011, 11:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Llamada de retorno con parametros adicionales

Con array_map no puedes pasar argumentos adicionales, la solución consiste en que implementes por tu cuenta la función de recursividad.

O bien, emplear otro callback que use los argumentos adicionales de tu función.
Código PHP:
return array_map(function($variable)
  use(
$length)
{
  return 
substr($variable,0,$length);
}, 
$variable); 
Claro, que eso solo sirve con PHP5.3+
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/07/2011, 11:50
Avatar de rusoftware  
Fecha de Ingreso: abril-2004
Ubicación: Rosario - Argentina
Mensajes: 1.083
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: Llamada de retorno con parametros adicionales

gracias amigo, era todo lo que necesitaba saber!

He creado, siguiendo la misma lógica un foreach para el array, lo posteo para que lo mires por si hice algo mal. Aparentemente funciona bien.

Código PHP:
function llamada_retorno($variable$lenght){
    if(
is_array($variable)){
        foreach(
$variable as $key => $valor){
            
$variable[$key] = substr($valor,0,$lenght);
        }
    }else{
        
$variable substr($variable,0,$lenght);
    }
    return 
$variable;


Y la llamada
Código PHP:
$arr[0]="hola mundo";
$arr[1]="hello world";

echo 
'<pre>';
print_r(llamada_retorno($arr,7));
echo 
'</pre>'
que imprime:
Código:
Array
(
    [0] => hola mu
    [1] => hello w
)

Última edición por rusoftware; 11/07/2011 a las 12:58

Etiquetas: llamada, parametros, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:06.