8721 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J'ai une fonction qui accepte un argument, cette fonction peut être appelée plusieurs fois dans la page avec bien sur à chaque fois un argument différent. J'aimerais remplir un tableau avec tous les arguments, est-ce possible ? quelqu'un a t-il une piste ?

Exemple de code :

<header>blablabla</header>

<?php options(option1); ?>

<div> du contenu</div>

<?php options(option2); ?>

<footer>blablabla</footer>


Le résultat serait :

$options = array(option1, option2);


Merci d'avance
Modifié par Eric_B (12 Jul 2014 - 01:32)
Si tu ne prévois d'utiliser les arguments que dans la function et nulle part ailleurs, tu peux utiliser une variable static; c'est crado et antédiluvien mais ça marche.
Sinon, pas le choix, tu es obligé d'utiliser une variable globale.

ON pourra sûrement mieux t'aider si tu nous expliques ce que tu cherches à faire avec ce genre de code.
Merci pour la réponse. Effectivement il faudra une variable globale car je compte réutiliser ces données ailleurs. Je voudrais connaitre toutes les options qui apparaissent au fil de lla page pour ensuite afficher plus tard et/ou ailleurs quelques chose de spécifique. En fait ce que je ne vois pas comment faire c'est de remplir le tableau à chaque appel de la fonction sans perdre la valeur de l'argument de l'appel précédent... J'espère avoir été clair.
Salut,

si tu utilises une variable globale

tu vas avoir une déclaration de type

 $mes_options = array();


qui precedent tous tes appels de la fonction options

et à l'intérieur de ta fonction options tu as un code qui fait
global $mes_options;
$mes_options[] = $option; // si $option et le nom de ton argument.


vu que la variable est globale et qu'avec [] tu ajoutes une nouvelle valeur tu n'as pas de raison de perdre tes arguments.

Enfin pas tant que tu ne commences pas a faire d'autre trucs avec ailleurs dans le code.
car quand on utilise des variables globales il faut être rigoureux et ne pas en abuser.

Perso moi j'inclurais la fonction options dans une classe et j'utiliserais une variable de portée static pour stocker mes infos. ce serait plus propre.
Merci !!
C'est tout simple en fait, je ne pensais pas que cela suffise pour faire ce que je veux. Comme je ne suis qu'au stade de la réflexion je vais pouvoir approfondir dans cette voie.
Merci pour cette seconde piste. Si je comprend bien la doc cette méthode est plutôt déconseillé par rapport à la précédente (au moins dans mon cas) ; array_push() aurait-il un avantage que je n'aurais pas vu ? Le tableau doit aussi être déclaré en dehors de la fonction pour pouvoir être réutilisé ?