TUTORIAL: Pase Num. variable. Alegaciones a la de una función PHP

  • spork
  • Brewmaster
  • Silver Member
  • Avatar de Usuario
  • Registrado: Sep 22, 2003
  • Mensajes: 6130
  • Loc: Seattle, WA
  • Status: Offline

Nota Marzo 27th, 2009, 11:32 am

Introducción


Nota: El código fuente completo para el ejemplo de este tutorial puede ser descargado al final del tutorial.

Nota: Tratar de hacer esto en C ? Check this out .

Cuando se declara una función, el tipo y número de argumentos suelen ser fijos en tiempo de compilación. Pero a veces es necesario para una función para ser capaz de aceptar un número variable de argumentos desconocidos hasta el tiempo de ejecución.

Este tutorial te mostrará cómo crear una función de PHP que puede aceptar un número variable de argumentos.

En pocas palabras


Si usted está buscando simplemente un ejemplo para irse de, no voy a hacerlo esperar. Aquí está un ejemplo de una suma function () que se suma a todos los enteros que se le pasa y devuelve la suma:

Código: [ Select ]
<?php
function sum() {
 
    $num = func_num_args();
 
    $total = 0;
    for( $i = 0; $i < $num; ++$i ) {
        $total += func_get_arg($i);
    }
 
    return $total;
}
 
$total = sum(1, 2, 3, 4, 5);
echo "Total: $total";
?>
}
  1. <?php
  2. function sum() {
  3.  
  4.     $num = func_num_args();
  5.  
  6.     $total = 0;
  7.     for( $i = 0; $i < $num; ++$i ) {
  8.         $total += func_get_arg($i);
  9.     }
  10.  
  11.     return $total;
  12. }
  13.  
  14. $total = sum(1, 2, 3, 4, 5);
  15. echo "Total: $total";
  16. ?>
  17. }


Cómo funciona


Veamos el código línea por línea:

Código: [ Select ]
function sum() {

Declaramos nuestra función. Tenga en cuenta que no necesitamos hacer nada especial aquí, simplemente declarar la función como si fuera una función normal sin parámetros.

Código: [ Select ]
$num = func_num_args();

func_num_args es una función PHP que devuelve el número de argumentos que fueron pasados a la función. Aquí, la tienda de este valor en una variable llamada $ num .

Código: [ Select ]
$total = 0;
for( $i = 0; $i < $num; ++$i ) {
    $total += func_get_arg($i);
}
  1. $total = 0;
  2. for( $i = 0; $i < $num; ++$i ) {
  3.     $total += func_get_arg($i);
  4. }

Ahora bucle a través de la lista de argumentos y añadir sus valores al total. func_get_arg es una función PHP recupera el valor de la especificada por el índice pasó a ella.

Código: [ Select ]
<?php
function sum() {
 
    $args = func_get_args();
    $num = func_num_args();
 
    $total = 0;
    for( $i = 0; $i < $num; ++$i ) {
        $total += $args[$i];
    }
 
    return $total;
}
 
$total = sum(1, 2, 3, 4, 5);
echo "Total: $total";
?>
  1. <?php
  2. function sum() {
  3.  
  4.     $args = func_get_args();
  5.     $num = func_num_args();
  6.  
  7.     $total = 0;
  8.     for( $i = 0; $i < $num; ++$i ) {
  9.         $total += $args[$i];
  10.     }
  11.  
  12.     return $total;
  13. }
  14.  
  15. $total = sum(1, 2, 3, 4, 5);
  16. echo "Total: $total";
  17. ?>


El otro método implica el paso de argumentos a una función como un equipo autónomo de matriz o de matriz asociativa:
Código: [ Select ]
function sum( $args ) {
 
    if( !is_array($args) || is_empty($args) ) {
        return 0;
    }
 
    $num = sizeof($args);
 
    $total = 0;
    for( $i = 0; $i < $num; ++$i ) {
        $total += $args[$i];
    }
 
    return $total;
}
$total = sum(array(1, 2, 3, 4, 5));
echo "Total: $total";
?>
  1. function sum( $args ) {
  2.  
  3.     if( !is_array($args) || is_empty($args) ) {
  4.         return 0;
  5.     }
  6.  
  7.     $num = sizeof($args);
  8.  
  9.     $total = 0;
  10.     for( $i = 0; $i < $num; ++$i ) {
  11.         $total += $args[$i];
  12.     }
  13.  
  14.     return $total;
  15. }
  16. $total = sum(array(1, 2, 3, 4, 5));
  17. echo "Total: $total";
  18. ?>


Conclusión


Ahora debe saber cómo crear una función PHP que acepta un número variable de argumentos en tiempo de ejecución. Esta técnica es particularmente útil cuando se crean las funciones de contenedor para las funciones que ya aceptar un número variable de argumentos, como printf (). Esto se demuestra en mi otro tutorial, Escribir una printf personalizado () Envoltura de funciones en PHP .

Yo siempre bienvenidos preguntas o comentarios acerca de este tutorial. Basta con enviar una respuesta o PM me im glad to help!
Attachments:
MultipleArgumentsPHP.zip

(465 Bytes) 375 veces

Complete source code for the sum() example used in this tutorial.

The Beer Monocle. Classy.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Marzo 27th, 2009, 11:32 am

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Marzo 27th, 2009, 11:08 pm

Un añadido tidbit thats bueno saber es que func_get_args está disponible en la clase métodos demasiado, a diferencia de la forma en que el method_exists y function_exists métodos están diseñados para las clases-vs-funciones.

Clases en realidad ni siquiera tienen ningún tipo de "method_get_args" contrapartida.
Strong with this one, the sudo is.

Publicar Información

  • Total de mensajes en este tema: 2 mensajes
  • Moderador: Tutorial Writers
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC