TUTORIAL: Pass Variable Num. des arguments à une fonction PHP

  • spork
  • Brewmaster
  • Silver Member
  • Avatar de l’utilisateur
  • Inscription: Sep 22, 2003
  • Messages: 6130
  • Loc: Seattle, WA
  • Status: Offline

Message Mars 27th, 2009, 11:32 am

Introduction


Note: Le code source complet pour l'exemple dans ce tutoriel peut être téléchargée à la fin du tutoriel.

Note: Essayer de faire dans la C ? Check this out .

Lorsque vous déclarez une fonction, le type et le nombre d'arguments sont généralement fixés à la compilation. Mais il est parfois nécessaire pour une fonction de pouvoir accepter un certain nombre d'arguments variable inconnue jusqu'à l'exécution.

Ce tutoriel va vous montrer comment créer une fonction PHP qui peut accepter un nombre variable d'arguments.

In a Nutshell


Si vous cherchez tout simplement un exemple pour aller au large de, je ne vais pas vous faire attendre. Voici un exemple d'une somme en fonction () qui additionne tous les entiers qui lui est passé et renvoie la somme:

Code: [ 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. }


How It Works


Regardons le code ligne par ligne:

Code: [ Select ]
function sum() {

Nous déclarons notre fonction. Notez que nous n'avons pas besoin de faire quelque chose de spécial ici, juste de déclarer la fonction comme s'il s'agissait d'une fonction normale sans paramètres.

Code: [ Select ]
$num = func_num_args();

func_num_args est une fonction PHP qui renvoie le nombre d'arguments qui étaient passés dans la fonction. Ici, on stocke cette valeur dans une variable appelée $ num .

Code: [ 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. }

Boucle maintenant dans la liste d'arguments et d'ajouter leurs valeurs au total. func_get_arg est une fonction PHP le récupère la valeur du spécifié par l'index qui lui est passé.

Code: [ 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. ?>


L'autre méthode consiste à faire passer des arguments à une fonction, comme un appareil autonome de tableau ou tableau associatif:
Code: [ 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. ?>


Conclusion


Vous devriez maintenant savoir comment créer une fonction PHP qui accepte un nombre variable d'arguments lors de l'exécution. Cette technique est particulièrement utile pour créer des fonctions wrapper pour les fonctions qui acceptent déjà un certain nombre d'arguments variable, comme printf (). Cela est démontré dans mon tutoriel d'autres, Rédaction d'un printf () personnalisée Wrapper Fonction en PHP .

J'ai toujours les bienvenus questions ou des commentaires sur ce tutoriel. Il suffit de poster une réponse ou PM moi, im glad to help!
Attachments:
MultipleArgumentsPHP.zip

(465 Octets) Téléchargé 375 fois

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

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

Message Mars 27th, 2009, 11:32 am

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Mars 27th, 2009, 11:08 pm

Une friandise ajoutée thats est bon de savoir que func_get_args est disponible dans les méthodes de classe aussi, contrairement à la façon dont le method_exists et function_exists méthodes sont conçues pour les classes-vs-fonctions.

Classes en fait même pas une sorte de "method_get_args" homologue.
Strong with this one, the sudo is.

Afficher de l'information

  • Total des messages de ce sujet: 2 messages
  • Modérateur: Tutorial Writers
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC